在没有特定目录的情况下重写特定域的规则

时间:2016-03-09 15:51:35

标签: php .htaccess redirect mod-rewrite http-status-code-301

我们的服务器上有多家商店,现在正试图将一家商店设为离线,但仍允许我们访问后端。

RewriteCond %{HTTP_HOST} ^(www\.)olddomain\.de$ [NC]
RewriteCond %{HTTP_HOST} !^(www\.)olddomain\.de\/backend\/$ [NC]
RewriteRule .* http://www.newdomain.de [L,R=301]

但在尝试访问www.olddomain.de/backend/时,我们仍会被重定向到www.newdomain.de。 如何在不为每个商店设置重写的情况下确定这一点。

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

  • 第1行始终是www.olddomain.de,而不是带有或不带www。
  • 的olddomain.de
  • 第2行不是HTTP_HOST标头,它是一个URI。
  • 第3行未将网址传递给新域名

尝试将其更改为

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.de$ [NC]
RewriteCond %{REQUEST_URI} !^/backend/ [NC]
RewriteRule (.*) http://www.newdomain.de/$1 [L,R=301]

现在读取

  

如果主机是www.olddomain.de或olddomain.de,并且请求的URI不以/ backend开头,可选地后跟进一步的URI详细信息,则将主机从olddomain.de重写为www。 newdomain.de并将请求的URI传递给www.newdomain.de