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 ..: (

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top