RewriteRule ^([^/\.]+)/$ $1 [R]
réoriente de website.com/abc/
à website.com/home/user/www/abc
Comment utiliser RewriteRule dans Apache pour rediriger depuis/abc/vers/abc?
Comment puis-je redirigent au bon endroit? (website.com/abc
)
RewriteRule ^([^/\.]+)/$ $1 [R]
réoriente de website.com/abc/
à website.com/home/user/www/abc
Comment utiliser RewriteRule dans Apache pour rediriger depuis/abc/vers/abc?
Comment puis-je redirigent au bon endroit? (website.com/abc
)
La première partie du RewriteRule
correspond à la partie correspondante, la seconde à l'expression de remplacement. Pour l'URL complète RewriteRule
, ils doivent commencer par ^/
(barre oblique), car un chemin après http://exampl.com
commence toujours par le caractère racine-barre oblique. Pour rediriger http://example.com/abc/
-http://example.com/abc
(enlever la barre oblique arrière) vous pouvez faire ceci:
RewriteEngine On
RewriteRule ^/([^/]+/$ /$1 [R]
A) a été omis alors j'ai essayé ces trois: RewriteRule ^/([^ /]) +/$/$ 1 [R] RewriteRule ^/([^ /] +)/$/$ 1 [R] RewriteRule ^/([^ /] + /) $/$ 1 [R] Je suis toujours redirigé vers example.com/home/user/www/abc au lieu de example.com/abc – admin
autres utilisateurs ont laissé un commentaire pour utiliser le ' L' pour finir (L pour Last) et empêcher d'autres règles de réécriture d'apparaître. Aussi, si votre page comprend une redirection, ou s'il y a une redirection dans l'entête de votre page, alors vous pouvez essayer ce que vous voulez dans Apache mais n'aidera pas. Pouvez-vous fournir un exemple de lien où cela se produit? – Abel
Il ressemble à l'URL est déjà en cours de réécriture à un nom de fichier et vous réécrivent le nom du fichier. Cela se produit généralement lorsque la règle de réécriture est spécifiée dans un fichier .htaccess. Le problème est dû au fait qu'au moment où Apache lit le fichier .htaccess, il a déjà résolu toutes les URL en noms de fichier. La solution standard consiste à fournir une règle RewriteBase dans votre fichier .htaccess. Essayez:
RewriteBase/
Au-dessus de votre RewriteRule pour commencer.
Plus de documentation est here
En utilisant uniquement cette règle et RewriteEngine sur .htaccess, je suis toujours redirigé vers site.com/home/user/www/abc. Ajouter dans RewriteBase/donne le même résultat – admin
vous mentionnez '.htaccess'. Pouvez-vous ajuster 'httpd.conf' à la place? Êtes-vous sur un environnement d'hébergement où ils ont tout simplement refusé cela? – Abel
Il n'y a aucun moyen de le faire sans RewriteBase? Ce site est déployé sous plusieurs chemins différents (pour les tests/développement), et j'aimerais que le même .htacess fonctionne partout./~ utilisateur/site/... ne cesse d'être changé en/home/user/site, et bien sûr, cette URL n'existe pas!Je ne veux pas mettre/~ user comme RewriteBase, car il faudrait le changer pour "user2" –
Vous pouvez essayer avec le L drapeau afin d'éviter toute autre règle à appliquer plus:
RewriteRule ^([^/\.]+)/$ /$1 [R,L]
Mais si rien ne fonctionne, essayez ceci:
RewriteCond %{THE_REQUEST} ^[A-Z]+\ (/[^/.?\ ]+)/[? ]
RewriteRule ^[^/.]+/$ %1 [R]
Votre hypothèse ne semble pas correcte, votre réécriture redirige 'anything-without-slash /' vers 'anything-without-slash'. Cela signifie que la redirection vers '/ home/etc ...' doit être provoquée ailleurs – Abel
Merci pour la réponse, Abel, mais il n'y a pas d'autres endroits où rediriger les pages, et j'ai supprimé toutes les autres règles de réécriture. Je suis toujours redirigé au mauvais endroit. – admin
Avez-vous une autre règle qui pourrait entrer en conflit avec celle-ci? En général, vous devez placer les règles qui provoquent une redirection externe avant celles qui provoquent une redirection interne. – Gumbo