Как сделать .htaccess с редиректом index.php

Konceptovskiy
На сайте с 31.01.2011
Offline
140
4052

Поставил редирект с www. на без www. такой:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.sait\.ru$ [NC]
RewriteRule ^(.*)$ http://sait.ru/$1 [R=301,L]

Еще нужно сделать без это дурацкого /index.php

Пожалуйста, покажите, что нужно прописать, как полностью должен выглядеть .htaccess с редиректом с www. на без и без /index.php ?

M
На сайте с 15.03.2012
Offline
128
#1

что вы имеете ввиду "без index.php" ?

Konceptovskiy
На сайте с 31.01.2011
Offline
140
#2
Moltisanti:
что вы имеете ввиду "без index.php" ?

Ну как что, чтоб со страниц с /index.php был редирект на без /index.php, а то там получаются дубли - все страницы.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#3


RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index\.php$ [NC]
RewriteRule ^(.*)$ http://sait.ru [R=301,L]

не проверял;)

Подпись))
M
На сайте с 15.03.2012
Offline
128
#4
Konceptovskiy:
Ну как что, чтоб со страниц с /index.php был редирект на без /index.php, а то там получаются дубли - все страницы.

если нет ЧПУ то

RewriteRule ^index.php$ / [R=301,L]

Konceptovskiy
На сайте с 31.01.2011
Offline
140
#5

Добавил

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index\.php$ [NC]
RewriteRule ^(.*)$ http://sait.ru [R=301,L]

Работает для главной, но не работает для страниц вида http://sait.ru/index.php/page

nikonlay
На сайте с 11.12.2006
Offline
191
#6

ну для таких страниц надо и выражение другое, типа

RewriteCond %{REQUEST_URI} ^/index\.php/(.*)$ [NC]

Мощные фонари и телескоп: https://market.yandex.ru/business/79203856
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#7


RewriteEngine On

#Переадресация с "WWW" на "БЕЗ". Универсальный метод, годен для всех сайтов
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

#Переадресация с /index.php(че-то) на че-то
#С site.ru/index.php на site.ru
#С site.ru/index.php/page на site.ru/page
RewriteCond %{REQUEST_URI} ^/index\.php(.*) [NC]
RewriteRule ^(.*)$ http://sait.ru%1 [R=301,L]
nikonlay
На сайте с 11.12.2006
Offline
191
#8

Милованов Ю.С, а в строке

RewriteCond %{REQUEST_URI} ^/index\.php(.*) [NC]

не нужно разве $ в конце? Типа конец строки регулярного выражения?

и еще, если слеш не поставить явно: ^/index\.php/(.*) , то под выражение ^/index\.php(.*) конечно, будет подходить /index.php/page, но при этом и /index.php.tpl и /index.phpbb.html и т.п.

не знаю, насколько это на практике встречается, но не лучше ли поставить слеш явно?

я не эксперт, поэтому спрашиваю, уточняю, а не спорю

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#9

nikonlay,

1) $ не обязательно

2) Если поставить слэш явно, то под редирект не попадет www.site.ru/index.php

3) index.php.tpl и всякое такое подобное подключается к скриптам через include/require, а не через http запрос, во всяком случае я не встречал такого. Ну даже если и есть(об этом обязательно должен знать человек, который правит .htaccess) то добавить исключающий(-е) RewriteCond(ы) - 5-ти минутное дело.

ЗЫ. форум на то и форум, тут не дают указания к действию, здесь дают советы(которые не есть догма). Следовать советам или нет - интимное дело каждого;)

Konceptovskiy
На сайте с 31.01.2011
Offline
140
#10

Работает редирект с sait.ru/index.php, с sait.ru/index.php/stranica.php, но для категорий не работает, то есть не работает для sait.ru/category/index.php/stranica.php

Кстати, если в конце любой страницы поставить что-то вроде /ahjgdagfgyeyfg.php тогда выдает дубль. Как убрать эти дубли?

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