从.htaccess mod_rewrite规则中排除子域名?

Min*_*lpt 10 php .htaccess mod-rewrite

我对.htaccess文件不太熟悉,而且我正在尝试排除一个子域(类似于dev.example.com)以下重写规则已经存在:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

此规则禁止任何人只是输入example.comhttp://example.com强制所需的URL显示,http://www.example.com.

我尝试了一些从这个重写规则中排除子域名的选项,但无济于事.该站点上的每个目录都有自己的.htaccess文件,但似乎这个目录仍然优先.有任何想法吗?谢谢!

Álv*_*lez 15

现有规则已排除子域.你只需要添加一个新条件:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^dev\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

你也可以摆脱正则表达式:

RewriteEngine On
RewriteCond %{HTTP_HOST} !=www.example.com [NC]
RewriteCond %{HTTP_HOST} !=dev.example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

语法可以在http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html#rewritecond找到