Перенаправление.htaccess для поддомена с подстановочными знаками
У меня есть домен example.com и я создал субдомен с подстановочными знаками, чтобы он указывал на корень DOC
Я хочу, чтобы каждый мог использовать name.example.com
а затем попросите его добавить свой идентификатор партнера в конец name.example.com/a/5
Я создал следующий код.htaccess
RewriteCond %{HTTP_HOST} ^name\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.name.example.com/a/1/$1 [L,R=301,QSA]
это правильно перенаправить на www.name.example.com/a/1/
но мне это нужно как name.example.com/a/1/
когда я удаляю www из правила.htaccess, он делает цикл перенаправления
веб-сервер Apache
2 ответа
Вам необходимо исключить пункт назначения, на который вы перенаправляете.
Пытаться:
RewriteCond %{HTTP_HOST} ^name\.example\.com$ [NC]
RewriteRule ^((?!a).*)$ http://name.example.com/a/1/$1 [L,R=301,QSA]
Или это:
RewriteCond %{HTTP_HOST} ^name\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/a [NC]
RewriteRule ^(.*)$ http://name.example.com/a/1/$1 [L,R=301,QSA]
Очистите кеш браузера или используйте другой браузер, чтобы проверить это.
Позвольте мне сначала поставить ваш код:
RewriteCond %{HTTP_HOST} ^name\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.name.example.com/a/1/$1 [L,R=301,QSA]
Условие будет соответствовать поддомену name.example.com/whatever
без wwww
так что он будет работать нормально, потому что вы перенаправляете на www.name.example.com/whatever
, но если вы удалите www
от замены, это означает, что вы перенаправить name.example.com/whatever
в name.example.com/a/1/whatever
перенаправить его снова, потому что нет ограничений, как если бы не совпадать каталог /a/
сделать это правило и вот почему зацикливание произошло.
Таким образом, вы должны перенаправить оба исключения /a/
каталог от URI
но, говоря, URI не содержит /a/
как следующее:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?name\.example\.com$ [NC]
RewriteRule !/a/ http://name.example.com/a%{REQUEST_URI} [L,R=301]
Примечание: очистите кеш браузера и протестируйте его.