2013-05-29 4 views
0

Я хотел бы переписать и 301 перенаправления URL с параметром запроса, как ниже: -RewriteRule требуется для URL с запросом параметров

domain.com/link.asp?StockNo=601-0287 

к чему-то, например, как показано ниже: -

domain.com/Product-Name 

количество акций будет различным для многих URL-адресов, равно как и имя продукта для каждого.

Существует не так много URL, чтобы сделать это вручную писать не будет проблемой ...

Что-то такое, как ниже не работает: -

RewriteRule ^link.asp/?StockNo=601-0287$ /Product-Name/$1 [R=301,L] 

Но это будет своего рода желаемые правила.

Что было бы лучшим способом справиться с этими переписываниями?

Должен ли RewriteCond потребоваться? Я предполагаю, что {QUERY_STRING} не требуется, потому что Product-Name не соответствует строке запроса?

Заранее спасибо.

ответ

1

Чтобы соответствовать REQUEST_URI и QUERY_STRING вместе вы должны использовать %{THE_REQUEST}

Включение mod_rewrite и .htaccess через httpd.conf, а затем поместить этот код в ваш .htaccess под DOCUMENT_ROOT каталоге:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=[^\s]+ [NC] 
RewriteRule^/Product-Name/? [R=302,L] 

EDIT: К обрабатывать конкретные запасы:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=601-0287 [NC] 
RewriteRule^/Product-A/? [R=302,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=601-0293 [NC] 
RewriteRule^/Product-B/? [R=302,L] 

Если у вас слишком много этих запасов для перезаписи, я бы настоятельно рекомендовал вам использовать RewriteMap. См. Этот ответ для получения более подробной информации: Edit .htaccess with PHP

+0

Спасибо за ваш ответ. Почти так же - добавление URL-адреса с помощью строки запроса (например: 'domain.com/Product-Name/? StockNo = 601-0287'). Все, что требуется от '?', Не требуется. Есть ли модификация вашего ответа, которая удалит строку запроса из URL-адреса? Спасибо за такой быстрый ответ. – zigojacko

+0

Можете ли вы попробовать в другом браузере, так как этот '?' В '/ Product-Name /% 1?' Лишит запрос из перенаправленного URL. – anubhava

+0

То же самое произошло в разных браузерах (кеш был очищен, чтобы быть уверенным). – zigojacko

Смежные вопросы