У клиента есть сайт expressionengine, и он хочет, чтобы файл index.php был удален. Если вы сделаете это само по себе, это снизит рейтинг его сайтов в SEO, поскольку изменит все URL-адреса. Итак, мы хотим сохранить количество ссылок и количество репостов в социальных сетях, добавив 301 ко всем страницам.

Я знаю, как удалить index.php, и я знаю, как перенаправить (я думаю), но когда я использую их оба, сервер вызывает цикл перенаправления. Моя логика искажена. Что мне здесь не хватает?

Вот с чем я работаю:

# Redirect attempt
Redirect 301 /index.php/feature/article/ http://domain.com/feature/article/

# EE index.php rewrite
RewriteCond $1 !^(index\.php|js|path\.php|press_releases|rear|robots\.txt|text\.html|themes) [NC]
RewriteRule ^(.*)$ /index.php/$1 [L] 
1
Ryan Dunlap 24 Июл 2012 в 07:29

1 ответ

Лучший ответ

Вы хотите перенаправить, только если фактический запрос относится к URL-адресу /index.php/. Измените свою директиву Redirect на это:

# Redirect attempt
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php
RewriteRule ^/?index.php/feature/article/(.*)$ http://domain.com/feature/article/$1 [R=301,L]

Это условие соответствует фактическому запросу, полученному сервером, а не URI (который может быть переписан вторым правилом).

2
Jon Lin 24 Июл 2012 в 07:54
Имеет полный смысл. Благодаря тонну. Что, если бы у меня на конце была переменная. Что-то вроде '/ feature / article / {variable_article_name} /' Как мне «переместить» {variable_article_name} из запроса в перезапись?
 – 
Ryan Dunlap
24 Июл 2012 в 07:48
Теперь мы говорим! Работает отлично. Спасибо за понимание.
 – 
Ryan Dunlap
24 Июл 2012 в 08:26