mod_rewrite 301 перенаправить со старого URL на новый codeigniter

Я обновил свой веб-сайт, чтобы теперь использовать структуру codeigniter, мои новые URL-адреса выглядят следующим образом: example.com/index.php/home/page/page-title

Старые URL-адреса: example.com/index.php?option=com_content&view=article&id=249.

В идеале я хочу сделать редирект для всех ссылок, отформатированных по-старому, на новые ссылки, но на сайте много страниц, и title/id не совпадают.

Я не хочу писать отдельное правило для каждой страницы. например

Перенаправление 301 /oldpage.html http://www.example.com/newpage.html

Я не возражаю против того, чтобы все неправильно отформатированные URL-адреса были перенаправлены на домашнюю страницу/страницу 404, если это проще.

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

Любая помощь приветствуется

Спасибо


person Irfan    schedule 18.10.2010    source источник


Ответы (2)


Сервер не знает, какой идентификатор может соответствовать данному заголовку. Вам придется обрабатывать эти случаи в CodeIgniter. Создайте таблицу со всеми старыми идентификаторами и новыми URI. Напишите скрипт, который обрабатывает эти запросы и выполняет перенаправление.

Пример (в последнее время я не касался CI):

.htaccess

# parameter 'id' followed by a '=' followed by a number
RewriteCond %{QUERY_STRING} id=(\d+)
RewriteRule ^ /redirector/url/%1? [L,R=301]

CodeIgniter

Redirector может быть классом CI, который просматривает url, проверяет его как положительное целое число, ищет в базе данных соответствующий новый URI и отправляет заголовок Location.

person fuxia    schedule 21.10.2010
comment
Спасибо, долго, но вот что я сделал - person Irfan; 10.11.2010

Попробуйте директиву RewriteMap. См. http://httpd.apache.org/docs/2.0/misc/rewriteguide.html для получения подробной информации.

person J-16 SDiZ    schedule 21.10.2010