2010-11-12 3 views
0

Je ne voulais pas que le serveur redirige toujours mes URL vers le format "http://www.domain.com", même si l'utilisateur écrit simplement "domain.com".Comment réparer la canonicalisation d'URL avec .htaccess?

Je pourrais trouver quelques exemples de ceci sur le Web, mais j'ai déjà quelques corrections dans le fichier .htaccess et je ne sais pas, où mettre quoi, donc il ne se heurte pas au code précédent.

Voici mon fichier .htaccess:

RewriteEngine on 
RewriteBase/
ErrorDocument 404 /404 

RewriteRule ^adminator/?$ adminator/login.php [L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?detail1=$1&detail2=$2&detail3=$3&detail4=$4 [QSA,L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?detail1=$1&detail2=$2&detail3=$3 [QSA,L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?detail1=$1&detail2=$2 [QSA,L] 
RewriteRule ^([^/\.]+)/?$ index.php?detail1=$1 [QSA,L] 

Que dois-je mettre, donc il fait la redirection d'URL "www"?

Et une dernière question, est-ce que tout ce que j'ai à faire est que les moteurs de recherche n'ont pas de problèmes avec les URL?

Répondre

0

Je fais habituellement le contraire.

Vous voulez probablement que www.example.com transmette à example.com - les URL plus courtes sont plus sexy. no-www.org/faq.php?q=class_b

Merci à HTML5 boilerplate, j'ajouter habituellement:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
</IfModule> 

Si vous voulez faire dans votre .htaccess:

RewriteEngine on 
RewriteBase/
ErrorDocument 404 /404 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
RewriteRule ^adminator/?$ adminator/login.php [L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?detail1=$1&detail2=$2&detail3=$3&detail4=$4 [QSA,L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?detail1=$1&detail2=$2&detail3=$3 [QSA,L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?detail1=$1&detail2=$2 [QSA,L] 
RewriteRule ^([^/\.]+)/?$ index.php?detail1=$1 [QSA,L] 

Sinon, essayez l'inverse RewriteCond et associé RewriteRule

0

Votre [^/\\.] motif simplifie à [^/.] car la période n'a pas besoin d'échapper.