Редирект с index.php в средине внутренних страниц

P4
На сайте с 15.11.2013
Offline
39
666

Здравствуйте.

Допустим есть адрес http://site.ru/index.php/company

Страница также доступна по адресу http://site.ru/company/.

Так вот хотелось бы привести страницы к единому адресу, а именно ЧПУ.

Естественно оптимальным было бы сделать редиректы с http://site.ru/index.php/company на http://site.ru/company/.

totamon
На сайте с 12.05.2007
Offline
437
#1
promoseo4:
Естественно оптимальным было бы сделать редиректы

так сделайте, что вам мешает?

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
nesterdron
На сайте с 09.10.2009
Offline
528
#2

Чере .хеачес делай

➨Куплю порн0 трафик - писать в ЛС<<< ➨Хостинг, VPS - Саппорт всегда Онлайн. Скидки и Тестовый период! (https://is.gd/5mCoBt) ➨о_0
P4
На сайте с 15.11.2013
Offline
39
#3

totamon, nesterdron, Пробывал сделать, но редиректит, если индекс.пхп в конце урла. Кто знает как сделать, что бы редиректило в средине урла?

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ (.*)/index\.php\ HTTP/

RewriteRule ^(.*/)index\.php$ http://ваш_сайт/$1 [R=301,L]

totamon
На сайте с 12.05.2007
Offline
437
#4
promoseo4:
Кто знает как сделать

с этого и надо начинать...

promoseo4:
RewriteRule ^(.*/)index\.php$ http://ваш_сайт/$1 [R=301,L]

RewriteRule ^index\.php/(.*)$ http://ваш_сайт/$1 [R=301,L]

а так?

P4
На сайте с 15.11.2013
Offline
39
#5

totamon, Попробовал

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ (.*)/index\.php\ HTTP/

RewriteRule ^index\.php/(.*)$ http://ваш_сайт/$1 [R=301,L]

Не помогло. Какие еще есть варианты?

W
На сайте с 21.01.2009
Offline
172
#6
promoseo4:
totamon, Не помогло. Какие еще есть варианты?

Погуглить намного быстрее будет, если знать что искать https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=trailing%20slash%20redirect

P4
На сайте с 15.11.2013
Offline
39
#7

weblad, быстрее будет, если тот кто разбирается в редиректах исправит код, что есть.

Накидать ссылок с поиска - много ума не нужно.

W
На сайте с 21.01.2009
Offline
172
#8
promoseo4:
weblad, быстрее будет, если тот кто разбирается в редиректах исправит код, что есть.
Накидать ссылок с поиска - много ума не нужно.

А хамить, нужно много ума?

Всего вариантов такого редирект несколько штук, помоему проще их самому найти, чем ждать когда вам на форум все варианты выложат.

Код выше правильный, если он у вас не работает, это не значит что его нужно исправлять.

J
На сайте с 20.02.2014
Offline
120
jkm
#9
promoseo4:
totamon, Попробовал

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ (.*)/index\.php\ HTTP/
RewriteRule ^index\.php/(.*)$ http://ваш_сайт/$1 [R=301,L]

Не помогло. Какие еще есть варианты?

Шаблон в RewriteRule верный.

Проблема в строке с RewriteCond.

В переменной %{THE_REQUEST} содержится полная строка запроса "GET /index.php/company HTTP/1.1", а шаблон "^[A-Z]{3,9}\ (.*)/index\.php\ HTTP" совпадет только если в переменной найдётся такой фрагмент "/index.php HTTP".

Уберите строку с этим RewriteCond и редирект заработает.

Вот еще другой вариант


RewriteCond %{THE_REQUEST} " /index\.php(/\S*) "
RewriteRule ^ %1 [R=301,L]
P4
На сайте с 15.11.2013
Offline
39
#10

weblad, Никто Вам не хамит. Простая констатация факта. Продолжать беседу смысла не вижу.

jkm, Спасибо, большое, ваш вариант работает правильно. Первый код так же рабочий если убрать первую строку. Плюс в репу.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий