Редакция .htaccess 301 с регулярными выражениями

34588
macek

Если у меня есть:

redirect 301 /users/foo http://www.example.com/profiles/foo redirect 301 /users/bar http://www.example.com/profiles/bar 

Могу ли я сделать что-то подобное?

redirect 301 ^\/users/(.+)$ http://www.example.com/profiles/$1 

редактировать

Нашел решение:

RedirectMatch users/(.+) http://www.exapmles.com/profiles/$1 [R=301,L] 

Это на самом деле перенаправляет вместо переписывания.


Редактировать 2

Смотрите решение @Darth Android, с RewriteEngineкоторым так же хорошо работает :)

7

1 ответ на вопрос

11
Darth Android

Попробуйте использовать правила перезаписи, если у вас есть apache:
RewriteEngine on
RewriteRule ^/users/(.*)$ http://www.example.com/profiles/$1 [R=301,L]

Обратите внимание, что вам понадобится установить и включить ModRewrite в вашей конфигурации apache. Вытащил отсюда, если вам нужен метод для IIS.

Я действительно хотел перенаправить, а не просто переписать. Оцените помощь, хотя :) macek 14 лет назад 0
@macek Я не проверял это лично, но у меня сложилось впечатление, что он будет перенаправлять с кодом 301. Я немного поиграюсь с этим. `[R = 301, L]` означает остановку обработки правил перезаписи и выдачу перенаправления 301. Darth Android 14 лет назад 0
ах, я не знал, что вы можете использовать `[R = 301, L]` в конце RewriteRule. Спасибо за это :) macek 14 лет назад 0
@macek Я тоже не делал этого около 30 секунд назад. Вот почему я захожу на этот сайт, чтобы быть полностью честным. Спасибо за увеличение моих знаний! :П Darth Android 14 лет назад 0
Я считаю, что первый `/` в `RewriteRule` должен быть удален для того, чтобы это работало как нужно. (Мне пришлось удалить его, чтобы он работал в моей системе.) После удаления первого `/` у нас осталось: `RewriteRule ^ users /(.*)$ http://www.example.com/profiles / $ 1 [R = 301, L] ` rinogo 6 лет назад 0
Ребята, если бы я мог спросить, поскольку я пытаюсь исправить свою странную изменяющуюся ссылку. Некоторое время пытаюсь это сделать, но это просто не сработает. Время от времени мой Magento меняет URL-адрес, который сегодня представляет собой нечто_909.html, а через несколько дней это уже не что-то_909.html, а что-то_911.html. Как это сделать с помощью регулярных выражений? Rob D. A. 6 лет назад 0