supprimer une ou plusieurs barres obliques mod_rewrite
Je sais que cette question a été posée de nombreuses fois sur ce site, mais la navigation à travers les billets je ne pouvais pas trouver une solution. En essayant de supprimer une ou plusieurs barres obliques après de domaine. La suite de mod_rewrite expressions semblent fonctionner pour les Url comme http://www.domain.com//path1///path2////, mais ne fonctionnent pas pour le domaine//
DirectorySlash Off
RewriteEngine on
# Canonical fix
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301]
RewriteRule ^/main.do http://www.domain.com/[R=301,L]
RewriteRule ^/index.jsp http://www.domain.com/[R=301,L]
# Remove bogus query strings
RewriteCond %{query_string} q= [NC]
RewriteRule (.*) http://www.domain.com/$1? [R=301,L]
# Remove multiple slashes after domain - DOESN'T WORK!!!
#RewriteCond %{REQUEST_URI} ^//+(.*)$ [OR]
#RewriteCond %{REQUEST_URI} ^(.*/)/+$
#RewriteRule /http://www.domain.com/%1 [R=301,L]
# Remove multiple slashes anywhere in URL
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
# Externally redirect to get rid of trailing slash except for home page, ads
RewriteCond %{REQUEST_URI} !^/ads/
RewriteRule ^(.+)/$ $1 [R=301,L]
Mais "domaine//" n'est pas une URI valide de toute façon?!?, en tant que "domaine" n'est pas dans les TLD format. Si c'est un interne de l'installation, de l'utilisation de domaine.lan ou si vous entendez par " localhost//', puis ajouter une entrée à votre fichier hosts.
Aiden, je n'étais pas autorisé à poster plus que d'une seule URL par conséquent, j'ai dû abréger. Afin de clarifier domain.com// ne fonctionne pas. Merci d'avoir pris le temps de répondre, Boyan
Pour la solution la plus courte ont un coup d'oeil à la réponse par Gerben sur cette question. stackoverflow.com/questions/8460015/...
Aiden, je n'étais pas autorisé à poster plus que d'une seule URL par conséquent, j'ai dû abréger. Afin de clarifier domain.com// ne fonctionne pas. Merci d'avoir pris le temps de répondre, Boyan
Pour la solution la plus courte ont un coup d'oeil à la réponse par Gerben sur cette question. stackoverflow.com/questions/8460015/...
OriginalL'auteur Boyan | 2010-05-17
Vous devez vous connecter pour publier un commentaire.
Ne peut pas se reproduire. Extra barres obliques immédiatement après que le domaine ne sont jamais transmises à mod_rewrite même avec DirectorySlashes, je n'ai pas vérifié si c'est un Opéra ou un Apache qui enlève les slash). Mais sinon, tout fonctionne bien:
Demande de http://localhost//abc/b//
Remarque: pensez à ne pas coder en dur l'hôte:
Également note de l'intérieur "//" n'a pas été remplacé. Vous allez ajouter une autre règle pour remplacer intérieur des barres obliques.
NOUVELLE ÉDITION:
OK, cela semble fonctionner pour prévenir les Url commençant ou se terminant par //:
peut-être qu'il va travailler avec THE_REQUEST au lieu de REQUEST_URI. Je vais vérifier que lorsque je rentre à la maison
nope, THE_REQUEST n'a pas fonctionné...
La première solution ne fonctionne pas pour les doubles barres obliques à droite après le domaine, mais il a travaillé pour le double slash à la fin de la domaine. Pour moi, la solution avec THE_REQUEST fonctionne dans les deux cas. Publier vos réécriture du journal avec rewriteloglevel 9.
Votre dernière suggestion a fonctionné! Merci
OriginalL'auteur Artefacto
Vous dites à Apache de charger tout, y compris la première barre oblique à 1 $
RewriteRule ^(.*)$ domain/$1 [R=301]
RewriteRule (.*) domain/$1? [R=301,L]
RewriteRule ^(.+)/$ $1 [R=301,L]
ajouter une barre oblique après le signe tomber les uns après votre nom de domaine
OriginalL'auteur Don
Voici la liste complète qui semble être au travail:
OriginalL'auteur Boyan
Ce on supprime toutes les barres obliques, avant l'envoi de la redirection
OriginalL'auteur Sylwester
Le code suivant supprime tous les extra barres obliques, y compris les barres obliques après le domaine.
OriginalL'auteur Kolyunya