Regexp / htaccess переписать удовольствие - PullRequest
1 голос
/ 16 августа 2011

У меня длинный список URL-адресов из старой структуры сайта, которые мне нужно перенаправить с помощью RedirectMatch на новые URL-адреса в том же домене.Хитрость в том, что старые (исходные) URL содержат кучу беспорядочных переменных.Это не проблема, верно?Я просто вставил несколько милых маленьких операторов Regexp для обработки этих переменных.Это то, что я сделал, и это соответствует переменным правильно.Sweet!

Проблема связана со второй частью оператора RedirectMatch - местом назначения.RedirectMatch правильно разрешает старые URL-адреса в новые URL-адреса, за исключением того, что старые переменные добавляются к новому URL-адресу.Я хочу сохранить перенаправления, но URL назначения не содержит переменных.Вот мой код:

RedirectMatch 301 ^/Shop/Category1/Category2/(.*)$ http://www.website.com/garage.html

Фактический URL перенаправления:

http://www.website.com/garage.html?launch_pg=itemZoomView&launch_sel=1009152&launch_pg_sp=true&title=Pig+Waste+Can

Может кто-нибудь указать мне, что я здесь делаю неправильно?Я просто хочу избавиться от этих отвратительных старых переменных и начать все сначала.

1 Ответ

1 голос
/ 16 августа 2011

Если под «переменными» вы подразумеваете строку запроса (часть launch_pg=itemZoomView&launch_sel=1009152&launch_pg_sp=true&title=Pig+Waste+Can вашего целевого URL-примера), используйте это правило перенаправления:

RedirectMatch 301 ^/Shop/Category1/Category2/(.*)$ http://www.website.com/garage.html?

Единственное отличие - ? в конце нового URL. Это останавливает копирование старой строки запроса, когда мы сообщаем Apache, что новый URL будет иметь эту пустую строку запроса.


Если вы можете использовать mod_rewrite , вот правило:

# Activate Rewrite Engine
Options +FollowSymLinks
RewriteEngine On

# the rewrite rule
RewriteRule ^Shop/Category1/Category2/(.*)$ http://www.website.com/garage.html? [R=301,L]

Это определенно будет перенаправлять с пустой строкой запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...