301 редирект в htaccess

12
imisterio
На сайте с 06.09.2009
Offline
184
1534

Есть сайт на Joomla. В индексе присутствуют дубли главной страницы:

/

/index.php

/home

/home.html

Нужно оставить только "/"

Как в файле htaccess прописать правильно 301 редирект с

/index.php

/home

/home.html

на

/

siv1987
На сайте с 02.04.2009
Offline
427
#1


RewriteCond %{REQUEST_URI} ^/(?:index\.php|home|home\.html)$
RewriteRule .* http://site.ru/? [R=301,L]
[Удален]
#2

imisterio, а просто в роботсе запретить не проще?

imisterio
На сайте с 06.09.2009
Offline
184
#3

siv1987, спасибо.

zagred, ну роботс он мутный какой-то) То работает то нет.

imisterio добавил 07.11.2010 в 16:27

Теперь со всех страниц перекидывает на главную. Очевидно что-то не то)

imisterio добавил 07.11.2010 в 16:40

Скорее всего это связано с тем, что уже есть 1 редирект для SEF ссылок, который перенаправляет с index.php?.. страниц на .html страницы.

Пришлось сделать такой редирект:

RewriteCond %{REQUEST_URI} ^/(?:home|home\.html)$

RewriteRule .* http://site.ru/? [R=301,L]

От двух дублей избавился но / и index.php всё равно будут :(

siv1987
На сайте с 02.04.2009
Offline
427
#4

Нда, этот REQUEST_URI не учитывает get запросы.

Тогда надо так:

RewriteCond %{REQUEST_URI} ^/(index\.php|home|home\.html)$

RewriteCond %{QUERY_STRING} ^$
RewriteRule .* http://site.ru/? [R=301,L]

Добавить этот кусок в самом начале.

imisterio
На сайте с 06.09.2009
Offline
184
#5

Получился такой файл:


RewriteCond %{REQUEST_URI} ^/(index\.php|home|home\.html)$
RewriteCond %{QUERY_STRING} ^$
RewriteRule .* http://www.сайт.ru/? [R=301,L]

RewriteEngine On
RewriteCond %{HTTP_HOST} ^сайт.ru
RewriteRule (.*) http://www.сайт/$1 [R=301,L]

RewriteCond %{REQUEST_URI} ^/sitemap.xml
RewriteRule .* /index.php?option=com_xmap&sitemap=1&view=xml

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

Но со всех страниц снова перекидывает на главную 😒

siv1987
На сайте с 02.04.2009
Offline
427
#6

Блин, в самом начале мод_реврайта. :)

RewriteEngine On


RewriteCond %{REQUEST_URI} ^/(?:index\.php|home|home\.html)$
RewriteCond %{QUERY_STRING} ^$
RewriteRule .* http://www.сайт.ru/? [R=301,L]

...остальные директивы
[Удален]
#7
imisterio:
роботс он мутный какой-то) То работает то нет.

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

imisterio
На сайте с 06.09.2009
Offline
184
#8

Поставил RewriteEngine On в самое начало. Ничего не изменилось)

siv1987
На сайте с 02.04.2009
Offline
427
#9

RewriteEngine On

#Включаем мод, все правила пишутся после этой директивы.

RewriteCond %{REQUEST_URI} ^/(?:index\.php|home|home\.html)$
RewriteCond %{QUERY_STRING} ^$
RewriteRule .* http://www.сайт.ru/? [R=301,L]

RewriteCond %{HTTP_HOST} ^сайт.ru
RewriteRule (.*) http://www.сайт/$1 [R=301,L]

RewriteCond %{REQUEST_URI} ^/sitemap.xml
RewriteRule .* /index.php?option=com_xmap&sitemap=1&view=xml

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

Тоже нет?

imisterio
На сайте с 06.09.2009
Offline
184
#10

zagred, а как /index.php закрыть в роботсе? Не закроет ли это полностью главную страницу?)

imisterio добавил 07.11.2010 в 18:11

siv1987:
RewriteEngine On

#Включаем мод, все правила пишутся после этой директивы.

RewriteCond %{REQUEST_URI} ^/(?:index\.php|home|home\.html)$
RewriteCond %{QUERY_STRING} ^$
RewriteRule .* http://www.сайт.ru/? [R=301,L]

RewriteCond %{HTTP_HOST} ^сайт.ru
RewriteRule (.*) http://www.сайт/$1 [R=301,L]

RewriteCond %{REQUEST_URI} ^/sitemap.xml
RewriteRule .* /index.php?option=com_xmap&sitemap=1&view=xml

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

Теперь выдает ошибку на отличном розовом фоне)

Sorry, the Server failed to retrieve the requested data.

unknown user account
12

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