jkm

Рейтинг
120
Регистрация
20.02.2014

Сбросить GET параметры можно добавив знак вопроса

http://mysite.ru/%1-%2/$1?

Если там кроме доменов RU нет других COM ORG и тд.


RewriteCond %{HTTP_HOST} ^(?:www\.)?+(?!xn--)([^.]+)\.mysite\.ru$
RewriteRule (.*) http://mysite.ru/%1-ru/$1? [R=301,L]

Редирект для всех доменов кроме .рф и остальных в Punycode


RewriteCond %{HTTP_HOST} ^(?:www\.)?+(?!xn--)([^.]+)\.([^.]+)$
RewriteRule (.*) http://mysite.ru/%1-%2/$1 [R=301,L]

Пара вариантов


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} =fdx_switcher=mobile
RewriteRule .* /$0? [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} " (\S+)\?fdx_switcher=mobile "
RewriteRule ^ %1? [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Правила применяются последовательно и в том порядке, в котором записаны.

Первыми поставить правила для отдельных страниц и категорий, а после уже общее правило для всех остальных.


RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru
RewriteRule ^cat/(.*)$ http://website.ru/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru
RewriteRule ^(.*)$ http://website.ru/$1 [R=301,L]

Для переадресации

site.ru/cat/ -> website.ru

www.site.ru/cat/ -> website.ru

site.ru/cat/lol -> website.ru/lol


RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru
RewriteRule ^cat/(.*)$ http://website.ru/$1 [R=301,L]

Без проверки RewriteCond %{THE_REQUEST} будет бесконечный редирект на http://сайт.ru/страница

В контексте VirtualHost проход по списку правил происходит только один раз и флаг [L] полностью останавливает обработку.

В контексте .htaccess флаг [L] останавливает только текущую итерацию, после чего выполняется новый проход по списку правил.

Завершается обработка, когда после очередного прохода не было изменений адреса или был внешний редирект.

http://habrahabr.ru/company/sprinthost/blog/129560/

/?page2 => /page/2/


RewriteCond %{THE_REQUEST} " /\?page2 "
RewriteRule ^ http://site.ru/page/2/? [R=301,L]

Или так


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

А по поводу http://site.ru/category4/?do=cat&category=load/111/4, то там подвох в том, что пока директива Redirect модуля mod_alias делает свое дело, mod_rewrite уже сделал свое дело и дописал параметры do=cat&category=load/111/4


RewriteCond %{THE_REQUEST} " /\?page2 "
RewriteRule ^ http://site.ru/page/2/? [R=301,L]

RewriteRule ^load/111/([1-4]) http://site.ru/category$1/? [R=301,L]

RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L]

Как-то так :)

/ru/forum/comment/14102612

Думаю, будет достаточно замены RewriteRule ^$ на RewriteRule ^index\.php$


AddDefaultCharset UTF-8

RewriteEngine on

RewriteCond %{HTTP_HOST} ^api\.site$
RewriteRule ^index\.php$ index-api.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

Нужно добавить проверку наличия www в переменной %{HTTP_HOST} и поставить нужный домен вместо %{SERVER_NAME}.


RewriteCond %{HTTP_HOST} ^www [OR,NC]
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://site.ru%{REQUEST_URI} [R=301,L]
Всего: 749