2016-10-12 3 views
1

Я перенаправляю следующие примеры домена.htaccess Перенаправление субдомена только без пути

example.domain.tld to domain.tld/foo/example-foo.html 

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

example.domain.tld/foo/ 

Мой текущий Htaccess перенаправить

RewriteCond %{HTTP_HOST} !^(www|staging)\. [NC] 
RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.de [NC] 
RewriteCond %{REQUEST_URI} !^(foo|foo2)[NC] # <== not working 
RewriteRule (.*) https://www.%2.de/foo/%1-foo.html [R=301,L] 
+0

Не уверен, чтобы понять, что вы действительно хотите, но я могу видеть следующие проблемы. Backreferences '% 2' и'% 1' являются backref для LAST 'RewriteCond' перед' RewriteRule'. Поэтому вы должны хотя бы переместить свой последний «RewriteCond», чтобы «RewriteCond% {HTTP_HOST}^(. *) \. (. *) \. De [NC]' был последним перед «RewriteRule». – Zimmi

ответ

1

REQUEST_URI должен начинаться с / и вы должны держать захватывая условия в конце.

Это должно работать:

RewriteCond %{HTTP_HOST} !^(www|staging)\. [NC] 
RewriteCond %{REQUEST_URI} !(^|/)(foo|foo2) [NC] 
RewriteCond %{HTTP_HOST} ^([^.]+)\.([^.]+)\.de [NC] 
RewriteRule (.*) https://www.%2.de/foo/%1-foo.html [R=301,L] 
+1

Я нашел решение. Это не нужно начинать с '/', но я сделал ошибку, используя '! ^' Вместо одного '!'. Спасибо за Ваш ответ – directory

Смежные вопросы