我有一个系统,其中多个域共享一个htaccess。在片刻,我使用以下内容将所有非www请求重定向到www。
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
现在唯一的问题是我根本无法使用子域名,因为sub-domain.myhost.com将被重定向到www.sub-domain.myhost.com。
是否有一种方法可以使上述规则例如排除以'sub-'开头的所有请求?而不是重定向到www。
更新:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(?!(?:sub-|www)\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
我的.htaccess中只有上述5行会抛出“500 - 内部服务器错误”。
答案 0 :(得分:1)
尝试这个简单的调整:
RewriteCond %{HTTP_HOST} ^(?!(?:sub-|www)) [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
<强>解释强>
^
锚点断言我们位于字符串的开头(?!(?:sub-|www))
断言以下内容不是sub-
或www
。