Comment puis-je corriger cette règle d'URL de réécriture?
-
05-07-2019 - |
Question
essentiellement besoin de convertir
avec www ou pas, exemple.com/[anycharacter]
dans
avec www ou pas, exemple.com/cgi-bin/new-disk.cgi/dir/smooth/[anycharacter]
additionnellement ...
Je voudrais rediriger TOUT www.exemple.com vers exemple.com
.La solution
Cela devrait fonctionner pour vous:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !cgi-bin/new-disk.cgi/dir/smooth
RewriteRule ^(.*)$ /cgi-bin/new-disk.cgi/dir/smooth/$1 [L]
Pour les deux premières lignes, il vérifie si vous avez www
dans votre URL. Si tel est le cas, utilisez la version non-www.
Notez le point d'exclamation (!
) à l'avant dernière ligne. Ceci est un opérateur non et, dans ce test, vérifie si le fichier demandé n'est pas votre fichier de réécriture final, dans ce cas:
cgi-bin/new-disk.cgi/dir/smooth
Si cela est vrai, reportez-le au script de réécriture que vous avez indiqué dans la dernière ligne.
Le caractère $ 1 fait référence au premier groupe de capture, comme indiqué par le premier ensemble de parenthèses sur la même ligne.
Autres conseils
Pour une partie de votre réponse, je pense que vous pouvez vous en servir comme exemple pour vous baser .. espérons que vous utiliserez un domaine de test:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^/(.*) http://example.com/$1 [L,R=301]
Il faudra peut-être ajouter un (. *)
et le rendre facultatif pour l'autre partie.