2012-12-21 14 views
6

Jeśli używam tego kodu, to sukces:.htaccess problem przekierowanie 301 ze zmiennymi url

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

Ale jeśli mogę to zrobić, to nie jest:

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

Uwaga zmienna w adresie URL jest przyczyną tego, że zawodzi.

Co robię źle? Czy jest inny sposób na zrobienie tego? Naprawdę potrzebuję zmiennych adresu URL.

Odpowiedz

16

Nie można umieścić parametrów ciągu zapytania w źródłowej ścieżce URI dyrektywy Redirect. Będziesz musiał użyć %{QUERY_STRING} zmienną mod_rewrite dla że:

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

lub uczynienia go bardziej ogólnie:

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

Doskonałe, nie wiedziałem o tym ograniczeniu 301 z plikami htaccess – cardi777

+0

Właściwie Jon, mam jeszcze jeden problem. Potrzebuję również /products.php?id=123&a=b jako łącza, ale potrzebuję tylko pierwszego adresu URL (id = 123) i chcę zignorować resztę - czy to możliwe? Co by zmienić – cardi777

+0

Domyślam się mówić o symbolu wieloznacznym po id = 123 – cardi777

-2

w PHP użytku base64_encode i funkcji base64_decode. Najpierw zakoduj URI, a następnie odkoduj funkcję przekierowania.