Aiuto con la regola mod_rewrite per URL dinamici
-
05-09-2019 - |
Domanda
uffa .. mod_rewrite mi fa sentire stupido. Solo che non ho ancora avvolto il mio cervello intorno ad esso. : /
ho questo URL:
http://example.com/a/name/
... che voglio sottolineare qui:
http://example.com/a/index.php?id=name
... dove name
è quello che si sta passato al index.php
come argomento id
.
tutto quello che ho provato risultati sia in un 404 o un 500 ..: (
Soluzione
Per iniziare si off:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule ^/?a/([^/]+)/?$ /a/index.php?id=$1 [QSA,L]
Se una riscrittura esercitazione non funziona per voi, provare un altro .
Modifica: esclusi index.php
come da suggerimento di Gumbo
Altri suggerimenti
Se si desidera che la barra finale per essere opzionale, è necessario escludere il file che si sta riscrivendo la richiesta. In caso contrario si avrà una bella ricorsione infinita.
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/a/index\.php$
RewriteRule ^/a/([^/]+)/?$ /a/index.php?id=$1 [L]
Ecco qualsiasi richiesta che inizia con /a/…
ma non /a/index.php
viene riscritto per /a/index.php
.
Ma se la barra finale è obbligatoria, non v'è alcuna necessità di escludere il file di destinazione:
RewriteEngine on
RewriteRule ^/a/([^/]+)/$ /a/index.php?id=$1 [L]
Forse qualcosa sulla falsariga di
RewriteEngine on
RewriteBase /a/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?id=$1 [L,QSA]
farebbe il trucco.
vi consiglio di dare un'occhiata a questo URL:
http://www.dracos.co.uk/code/ apache-rewrite-problema /
Le soluzioni presentate funzioneranno, ma ci sono alcuni avvertimenti spiegate nella URL, per quanto riguarda principalmente? e # negli URL stessi.