mod_rewrite для определенных динамических страниц - PullRequest
0 голосов
/ 23 октября 2009

У меня появилось несколько старых страниц с товарами в поисках переработанного сайта.

Старые страницы выглядят так: www.site.com/mycart/index.php?act=viewProd&productId=34

У меня есть статические страницы, на которые я хочу перейти.

так я хочу

перенаправление 301 /mycart/index.php?act=viewProd&productId=34 http://www.site.com/prod-name1

Я знаю, что не могу сделать это с помощью перенаправления 301, поскольку это не статическая страница.

Я хотел бы знать, как лучше всего подойти к этому.

Мне нужно будет иметь правило для каждого перенаправления, поскольку между старой структурой и новыми страницами нет корреляции.

было бы возможно просто сопоставить на productId = 34

RewriteRule [url содержит productId = 34] http://www.site.com/prod-name1? [R = 301, L]

Если это будет верное решение, как мне найти соответствие для "productId = 34".

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 23 октября 2009

Вам нужно использовать RewriteCond для проверки запроса:

RewriteCond %{QUERY_STRING} ^(&[^&]*)*productId=34(&|$)
RewriteRule ^mycart/index\.php$ /prod-name1? [L,R=301]

^(&[^&]*)* до и (&|$) после productId=34 только для перезаписи, если productId=34 является полным аргументом URL-адреса, а не просто частью такого как productId=34567 или foobarproductId=34.

0 голосов
/ 23 октября 2009

Почему бы вам не использовать 301 в этом случае? Вот руководство по изменению динамических URL-адресов на статические URL-адреса . Если вы действительно перенаправляете на статические страницы, вам нужен внешний перенаправление. Если вы храните свои файлы PHP и хотите поместить перед ним симпатичный URL-адрес, вы хотите выполнить внутреннюю перезапись, т. Е. Когда приходит запрос для / prod-name-1, направьте его внутренне в / mycart / index .php? productId = 34, но не отправлять 301.

...