Движок сайта DLE, как известно без дополнительных действий у этого движка появляются дубли страниц за счёт страниц со слэшем и без, например:
http://www.anime-news.org.ua/anime и
http://www.anime-news.org.ua/anime/ обе эти страницы имели одинаковый контент и выдавали статус код 200 ОК. Я решил добавлять в конец адреса слэш с 301 редиректом, нашёл в инете вот такой код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
Но возникла проблема в конец всех файлов слэш стал добавляться, то есть, например:
http://www.anime-news.org.ua/sitemap.xml/ Тогда я изменил код таким образом:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*).xml
RewriteCond %{REQUEST_URI} !(.*).html
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
Слэш перестал добавляться к html и xml файлам, вроде всё работает нормально, но хотел бы комментарий от знающих людей, всё ли правильно было сделано. И отдельно вопрос: Что значит строчка:
RewriteCond %{REQUEST_FILENAME} !-f
Также ещё вопрос: На сайт устанавливал модуль карты сайта, изначально для ЧПУ в .htaccess был прописан такой код:
RewriteRule ^sitemap(/?)+$ /?do=sitemap [L]
Так как с таким кодом были доступны две одинаковые страницы с кодом статуса 200 ОК:
http://www.anime-news.org.ua/sitemap и
http://www.anime-news.org.ua/sitemap/.
Поменял код на:
RewriteRule ^sitemap/(.*)$ /?do=sitemap [L]
Правильно ли я сделал?
Далее сделал перенаправление с домена без www на домен с www, а также с /index.php /index.html на /.
RewriteCond %{HTTP_HOST} ^anime-news\.org.ua$ [NC]
RewriteRule ^(.*)$ http://www.anime-news.org.ua/$1 [R=301,L]
# Определяем главное зеркало
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ / [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
Всё ли правильно?
Потом посмотрел в панель вебмастера в гугле и увидел, что есть ещё дубли за счёт, например:
http://www.anime-news.org.ua/anime/ и
http://www.anime-news.org.ua/anime/page/1/. Добавил вот такой код:
# Редирект с первой страницы на основную
RewriteRule ^(.*)/1$ $1 [R=301,L]
RewriteRule ^(.*)page$ $1 [R=301,L]
Но не работает такой код, если ввести адрес
http://www.anime-news.org.ua/anime/page/1/, то перенаправление не происходит, а если ввести
http://www.anime-news.org.ua/anime/page/1 , тогда вообще кидает на страницу с таким же содержанием, но адресом
http://www.anime-news.org.ua/home/amd7750/...lic_html/anime/.
Как исправить код, что бы правильно обрабатывало?
Помогите, пожалуйста!
На данный момент весь код имеет вид:
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^anime-news\.org.ua$ [NC]
RewriteRule ^(.*)$ http://www.anime-news.org.ua/$1 [R=301,L]
# Определяем главное зеркало
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ / [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
# Редирект с первой страницы на основную
RewriteRule ^(.*)/1$ $1 [R=301,L]
RewriteRule ^(.*)page$ $1 [R=301,L]
# Карта сайта
RewriteRule ^sitemap/(.*)$ /?do=sitemap [L]
# Без слэша на слэш
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*).xml
RewriteCond %{REQUEST_URI} !(.*).html
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
Дальше стандартное содержание от движка DLE 9.3.
Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
|
Сообщение отредактировал ErgoProxy - 27.9.2011, 12:05