Aide à la règle mod_rewrite pour l'URL dynamique
-
05-09-2019 - |
Question
Ugh .. mod_rewrite me fait sentir stupide. Je viens pas enveloppé mon cerveau autour d'elle encore. : /
Je l'adresse suivante:
http://example.com/a/name/
... que je tiens à souligner ici:
http://example.com/a/index.php?id=name
... où name
est ce qui se passe à index.php
comme argument id
.
Tout ce que j'ai essayé des résultats soit dans un 404 ou un 500 ..: (
La solution
Pour vous commencer:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule ^/?a/([^/]+)/?$ /a/index.php?id=$1 [QSA,L]
Si un tutoriel de réécriture ne fonctionne pas pour vous, essayer un autre .
Edit: index.php
exclu selon la suggestion de Gumbo
Autres conseils
Si vous voulez que le slash soit facultative, vous devez exclure le fichier que vous réécrivez la demande. Sinon, vous aurez une belle récursion infinie.
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/a/index\.php$
RewriteRule ^/a/([^/]+)/?$ /a/index.php?id=$1 [L]
Voici toute demande qui commence par /a/…
mais elle ne /a/index.php
est réécrite à /a/index.php
.
Mais si le slash est obligatoire, il n'y a pas besoin d'exclure le fichier de destination:
RewriteEngine on
RewriteRule ^/a/([^/]+)/$ /a/index.php?id=$1 [L]
Peut-être que quelque chose le long des lignes de
RewriteEngine on
RewriteBase /a/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?id=$1 [L,QSA]
ferait l'affaire.
Je vous suggère de jeter un oeil à l'adresse suivante:
http://www.dracos.co.uk/code/ apache-rewrite-problème /
Les solutions présentées fonctionnent, mais il y a des mises en garde ont expliqué dans l'URL, principalement en ce qui concerne? et # dans les URL elles-mêmes.