首页 文章

htaccess - 重定向非www - 但排除特定的子域

提问于
浏览
1

我有一个系统,其中多个域共享一个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 - 内部服务器错误” .

1 回答

  • 1

    试试这个简单的调整:

    RewriteCond %{HTTP_HOST} ^(?!(?:sub-|www)) [NC] 
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    

    Explanation

    • ^ 锚断言我们在字符串的开头

    • 否定前瞻 (?!(?:sub-|www)) 断言以下内容不是 sub-www .

相关问题