2012-12-21 21 views
6

Se io uso questo codice, è successo:.htaccess problema 301 reindirizzamento con variabili URL

Redirect 301 /products.php http://website.com.au/product_123.php 

Ma se faccio questo, non è così:

Redirect 301 /products.php?id=123 http://website.com.au/product_123.php 

Nota la variabile nell'url è ciò che sta causando il fallimento.

Cosa sto sbagliando? c'è un altro modo per fare ciò? Ho davvero bisogno delle variabili urls.

risposta

16

Non è possibile inserire parametri di stringa di query nel percorso dell'URL di origine della direttiva Redirect. Dovrete usare variabile di mod_rewrite %{QUERY_STRING} per questo:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^id=123$ 
RewriteRule ^/?product\.php$ http://website.com.au/product_123.php? [L,R=301] 

o per fare più generale:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^id=([^&]+) 
RewriteRule ^/?product\.php$ http://website.com.au/product_%1.php? [L,R=301] 
+0

Perfetto, non sapevo su quella restrizione su 301 con file htaccess – cardi777

+0

In realtà Jon, sto avendo un altro problema. Ho anche bisogno di /products.php?id=123&a=b come collegamento, ma ho solo bisogno del primo bit degli url (id = 123) e voglio ignorare il resto - è possibile? Cosa cambierei – cardi777

+0

Credo che parlando di un carattere jolly dopo l'id = 123 – cardi777

-2

In PHP uso base64_encode e funzioni base64_decode. Prima codifica l'URI, quindi decodifica nella funzione di reindirizzamento.

Problemi correlati