Как правильно index.php замаскировать под корень сайта?

12
A
На сайте с 29.12.2005
Offline
118
1334

Проблема: /index.php и просто / - абсолютно одинаковые страницы. Похоже из-за этого в яндексе выпала из индекса морда.

RewriteRule ^index.php$ / [L,R=301] - это правильное решение проблемы?

При этом на сайте есть и просто /pagexxx.html страницы и /index.php?param=zzz

С html-ями все понятно, а вот индексация index.php с параметрами не пострадает?

a.fatman
На сайте с 15.01.2006
Offline
127
#1

Ставьте ссылки на морду в виде <a href="/">ссылка на главную</a>.

T
На сайте с 11.08.2005
Offline
181
#2

удалено в связи с тем, что совет оказался не верным (см. ниже).

A
На сайте с 29.12.2005
Offline
118
#3
a.fatman:
Ставьте ссылки на морду в виде <a href="/">ссылка на главную</a>.

Само собой, но ведь мир не без "добрых" людей :) , могли поставить ссылку и на index.php

A
На сайте с 29.12.2005
Offline
118
#4
Timen:
Вы ведь явно указали, что оно применимо только при выполнении условия: ^index.php$

То ли лыжи не едут, то ли я чего то не понимаю....

RewriteRule ^index.php$ / [L,R=301] срабатывает нормально, но для абсолютно всех урлов, содержащих index.php

При этом /index.php?param=zzz преобразуются к виду /?param=zzz и все работает нормально.

Что же это получается, что $ в качестве анкора конца строки не срабатывает? 😕

Да, правило применяется в .htaccess

T
На сайте с 11.08.2005
Offline
181
#5

Действительно не работает, извините...

Вашу задачу можно решить другим способом. Добавьте этот код в самом начале Вашего файла index.php.


if ($_SERVER['REQUEST_URI']=='/index.php')
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://".$_SERVER["HTTP_HOST"]."/");
exit();
}
A
На сайте с 29.12.2005
Offline
118
#6
Timen:
Действительно не работает, извините...
Вашу задачу можно решить другим способом. Добавьте этот код в самом начале Вашего файла index.php.

Да, остается только так. Странно только, почему mod_rewrite так капризничает. Даже маны от него почитал, но ясности не появилось...

antono
На сайте с 12.07.2004
Offline
303
#7

Ставьте ссылки как уже говорили на корень сайта / а не на index.php, и в robots.txt поставьте Disallow: /index.php

Kolyaj
На сайте с 28.03.2006
Offline
69
#8

Disallow: /index.php закроет для индексации index.php с параметрами.

antono
На сайте с 12.07.2004
Offline
303
#9
Kolyaj:
Disallow: /index.php закроет для индексации index.php с параметрами.

Параметры тоже переписать как:

www.site.ru/?param1=4&param2=6

UA
На сайте с 19.06.2006
Offline
100
#10
Anton:
Странно только, почему mod_rewrite так капризничает. Даже маны от него почитал, но ясности не появилось...

index.php - это URL

param1=4&param2=6 - это query string

В вашем примере mod_rewrite работает только с URL, query string не меняется.

Если нужно учитывать query string, читайте это:

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

You can even create URLs in the substitution string containing a query string part. ...
12

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