J'ai besoin de virer la redirection 301
de example.com...
à example.com
et example.com//////
à example.com
Voici mon code:
RewriteCond %{THE_REQUEST} \ /([^\?\ .]*)\.(?:\?|\ |$)
RewriteRule ^ /%1 [L,R=301]
Ça ne marche pas.
Et voici mon . Htaccess fichier:
RewriteEngine on
RewriteCond %{HTTP_Host} ^www.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
RewriteCond %{THE_REQUEST} \ /([^\?\ .]*)\.(?:\?|\ |$)
RewriteRule ^ /%1 [L,R=301]
Le ou les points à la fin du nom d'hôte (c'est-à-dire n domaine pleinement qualifié ) apparaîtront dans la variable de serveur HTTP_Host
(pas THE_REQUEST
) et les barres obliques multiples en regard de le début du chemin d'URL sera présent dans la variable THE_REQUEST
(comme vous utilisez), vous aurez donc besoin d'au moins deux règles. Essayez quelque chose comme:
# Remove trailing dot(s) on the hostname
RewriteCond %{HTTP_Host} \.$
RewriteRule (.*) https://example.com/$1 [R=301,L]
# Remove multiple slashes at the start of the URL-path
RewriteCond %{THE_REQUEST} \ //+
RewriteRule (.*) /$1 [R=301,L]
La directive RewriteCond
recherche simplement plusieurs barres obliques au début du chemin d'URL (après le premier espace de la variable THE_REQUEST
). La redirection repose ensuite sur le fait qu'Apache tronque automatiquement plusieurs barres obliques dans le chemin d'URL qui correspond au modèle RewriteRule
et l'utilise ($1
backreference) dans la substitution .
NB: Assurez-vous de vider le cache de votre navigateur avant de tester car des 301 erronés ont probablement été mis en cache.
De plus: Je pense qu'un nom d'hôte avec plus d'un point est strictement non valide - la résolution échouera et le serveur ne sera jamais réellement envoyé. (?) Si la requête est émise par un navigateur, celui-ci tronquera probablement les multiples points de fin, ne laissant qu'un seul (c.-à-d. Pleinement qualifié), avant de faire la demande.
Référence:
peut-être celui-ci:
<IfModule mod_rewrite.c>
RewriteCond %{THE_REQUEST} //|..
RewriteRule ^.*$ /$0 [R=301,L,NE]
</IfModule>