Задать вопрос
@theEternalStudent

Что ни так с моим .htaccess?

RewriteEngine on
RedirectMatch 403 /\..*$

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC]
RewriteRule ^(.*)$ site.com/$1 [R=301,L]

Последний блок должен переадресовывать все ссылки с www на без www, что он и делает. Но при этом по какой то причине когда вводишь к примеру www.site.com/category?id=246, он переадресовывает на site.com/index.php?id=246. Сайт работает на yii, никаких похожих роутов там нет.
  • Вопрос задан
  • 407 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
@theEternalStudent Автор вопроса
Алексей @alsopub
Сначала отрабатывает RewriteRule . index.php а уже потом RewriteRule ^(.*)$ site.com/$1 [R=301,L]
Перенесите блок с редиректом www -> безwww наверх
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
# RewriteEngine
<IfModule mod_rewrite.c>

RewriteEngine on
RewriteBase /

# Редирект на страницу без многократных /.
RewriteCond %{THE_REQUEST} //
RewriteRule .* /$0 [R=301,L]

# Убираем несколько слешей в урле
RewriteCond %{THE_REQUEST} \s/+(.*?)/{2,}([^\s]*)
RewriteRule ^ %1/%2 [R=302,L,NE]
# Убираем последний слеш в урле
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} (/+)$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
# Редирект со строчных букв на прописные
# Необходимо в VirtualHost добавить RewriteMap  lc int:tolower
# RewriteCond %{REQUEST_URI} [A-Z]
# RewriteRule ^(.*)$ /${lc:$1} [R=301,L]


# Блокируем рефер спам
RewriteCond %{HTTP_REFERER} simple-share-buttons\.com [NC]
RewriteRule .* – [F]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php


#в случае index.php|htm|html:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ 
RewriteRule ^(.*)index\.(php|html|htm)$ $1/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTPS/ 
RewriteRule ^(.*)index\.(php|html|htm)$ $1/ [R=301,L]


</IfModule>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы