mod_rewrite 301 перенаправление со старого URL на новый кодировщик - PullRequest
0 голосов
/ 18 октября 2010

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

.

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

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

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

Redirect 301 /oldpage.html http://www.example.com/newpage.html

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

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

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

Спасибо

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Сервер не знает, какой идентификатор может соответствовать данному заголовку.Вам придется обрабатывать эти случаи в 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заголовок.

0 голосов
/ 21 октября 2010

Попробуйте директиву RewriteMap. Подробнее см. http://httpd.apache.org/docs/2.0/misc/rewriteguide.html.

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