Rediriger les Non-WWW WWW Url
Lors de l'accès à mon domaine, il est redirigé vers
http://www.mydomain.com/en/index.php à l'aide du code php.J'ai ajouté le code suivant dans .htaccess
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RedirectPermanent /pages/abc-123.html http://www.mydomain.com/en/page-a1/abc.php
pour rediriger les gens de non www www,
Encore les utilisateurs peuvent accéder en tapant http://mydomain.com/en/page-a1/abc.php et http://www.mydomain.com/en/page-a1/abc.php Url
Personne ne sait la méthode complètement le rediriger vers http://www.mydomain.com/en/page-a1/abc.php même si l'utilisateur a tapé http://www.mydomain.com/en/page-a1/abc.php, et interdisent l'accès à des Url sans www.
- L'idée de cette réécriture est de rediriger l'utilisateur vers www si il vient à la non-www. Donc non www est toujours accessible, mais raconte navigateur pour rediriger vers www et de garder l'url dans le cache, comme c'est permanente (301) de redirection. Ainsi, à partir de l'utilisateur du point de vue, quand il accède à
domain.com
, navigateur redirige automatiquement àwww.domain.com
. Vos utilisateurs voirdomain.com
dans la barre d'adresse du navigateur? - Non, l'habitude de voir domain.com mais il peut ouvrir mydomain.com/en/page-a1/abc.php de la page dans le navigateur.
- Et que voulez-vous faire? Interdire à l'utilisateur de taper l'URL dans le navigateur?:) Si vous souhaitez refuser
domain.com
service à tous, juste rediriger vers404
page, avec quelque chose commeRewriteRule ^(.*)$ 404.php [L]
- Doublons possibles: stackoverflow.com/questions/4042309/www-and-non-www-sites, stackoverflow.com/questions/1685962/..., stackoverflow.com/questions/1100343/..., stackoverflow.com/questions/3707319/..., etc
Vous devez vous connecter pour publier un commentaire.
en php
strncmp($_SERVER['HTTP_HOST'], 'www.', 4) === 0
😉sub.mydomain.com
?$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
Je ne suis pas sûr de savoir comment le faire à travers .htaccess, mais je le fais avec du code PHP à l'intérieur de moi-même mon
config.php
qui est chargé pour chaque fichier.EDIT: @genèse, vous avez raison, j'ai oublié https
Changement
à
/
. Pourquoi devrais-je utiliser HTTP_HOST à la place?ServerName
de la directive VirtualHost (et n'est pas nécessairement le vrai nom d'hôte de l'url)Ajouter
RewriteEngine On
avantRewriteCond
pour permettre à vos règles de réécriture:Et si vous avez https:
Fonctionne Correctement
Je pense que vous voulez rediriger l'utilisateur au lieu de réécrire l'URL, dans ce cas, l'utilisation
Redirect
ou " RedirectMatch` directive. http://httpd.apache.org/docs/2.3/rewrite/remapping.html#old-to-new-extern.htaccess
fichier, vous devez mettre à jour votre question à ajouter afin que nous puissions les conseils où placer le code.redirect 301 ...
sytanx, ce qu'il devrait être à l'extérieur de laIfModule
, sinon vous devez éditer votre question à ajouter tout le code, donc je peux vous suggérer l'endroit où placer le code ci-dessus pour que cela fonctionne.mydomain
avec le nom de votre domaine. Il suffit de déposer le tout dans la.htaccess
fichier et il devrait fonctionner parfaitement.http://mydomain.com/en/page-a1/abc.php
et il n'est pas en vous redirigeant vershttp://www.mydomain.com/en/page-a1/abc.php
?mod_rewrite
activé?Redirect 301 /pages/abc-123.html http://www.mydomain.com/en/page-a1/abc.php
est au travail, mais cette Non-WWW WWW est la seule chose qui ne fonctionne pas.Connaissez-vous une autre méthode pour le faire??Redirect 301 ...
ne nécessite pas demod_rewrite
il exigemod_alias
. Veuillez vérifier si vous avezmod_rewrite
activé..htaccess
fichier? Il doit être au-dessus de/en/
, qui est, il doit être à la racine pour que cela fonctionne.