为了论证,让我们假装:
我想:
任何帮助?
到目前为止的解决方案:
RewriteCond %{HTTP_HOST} !^(www\.)?namhost\.com$ [NC]
RewriteRule (.*) http://www.namhost.com/$1 [R=301,L]
这会将任何不包含namhost.com的内容重定向到www.namhost.com。例如:namhost.net - > namhost.com,www.namhosting.com - > namhost.com。现在我只需要规则:
谢谢!
答案 0 :(得分:3)
RewriteEngine On
#check if it's not mydomain.com
RewriteCond %{HTTP_HOST} !^(www\.)?mydomain\.com$ [NC]
#check if it's not a subdomain
RewriteCond %{HTTP_HOST} !^(.*)\.([A-Za-z0-9\-]+)\.(.{2,3}) [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([A-Za-z0-9\-]+)\.(.{2,3}) [NC]
#check if it's not one of determind sub-domains
RewriteCond %{HTTP_HOST} !^(svn|sql|pdf)\.([A-Za-z0-9\-]+)\.(.{2,3})$
#Redirect request to mydomain.com
RewriteRule (.*) http://www.mydomain.com/$1 [R=301,L]
#check if it's sub-domain and it's not mydomain.com's subdomain
RewriteCond %{HTTP_HOST} !^(www\.)?mydomain.com$ [NC]
RewriteCond %{HTTP_HOST} ^(svn|sql|pdf)\.mydomain\.com$
RewriteCond %{HTTP_HOST} ^(svn|sql|pdf)\.([A-Za-z0-9\-]+)\.(.{2,3})$ [NC]
RewriteRule (.*) http://%3.mydomain.com/$1
请告诉我,如果需要更改!: - )
RewriteCond %{HTTP_HOST} !^(.*\.)?namhost\.com$ [NC]
RewriteCond %{HTTP_HOST} !^localhost$ [NC]
RewriteRule (.*) http://%1namhost.com/$1 [R=301,L]
答案 1 :(得分:2)
我使用这样的东西......
RewriteEngine On
RewriteCond %{http_host} ^mydomain.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
你也可以通过做这样的事情重定向到https ......
RewriteCond %{http_host} ^mydomain.com/login.php [NC]
RewriteRule ^(.*)$ https://www.mydomain.com/login.php [R=301,L]
答案 2 :(得分:1)
您的 Rule1 没有明确的子域名
如果此人输入mydomain.com以外的任何内容,例如mydomain2.com,则必须重定向到mydomain.com
所以 Rule2 似乎与 Rule1
相矛盾如果此人键入任何没有子域的域,则必须重定向到www.mydomain.com
即。 Rule1 的mydomain2.com
将转到mydomain.com
,但是 Rule2 ,因为它没有子域,它会转到{{1 }}
我会假设在Rule1中你的意思是www.mydomain.com
应该转到anysubdomain.non-mydomain.com
。如果没有,请澄清,因为以下规则是基于这一假设。
尝试将以下内容添加到您网站根目录中的.htaccess
www.mydomain.com
答案 3 :(得分:1)
我在这里应用Occam's razor,假设您的条件是互斥的(因此[L]
用于[last]
规则),并且重定向到域总是意味着重定向到文档根目录。您应该知道mod_rewrite is capable of much more。
如果此人输入mydomain.com以外的任何内容,例如 mydomain2.com,它必须重定向到mydomain.com
将是
RewriteCond %{HTTP_HOST} !^mydomain\.com$
RewriteRule ^/.*$ http://mydomain.com/ [R,L]
如果此人键入任何没有子域的域,则必须重定向到www.mydomain.com, 请注意,此规则不得影响子域名,例如svn.mydomain.com
将是
RewriteCond %{HTTP_HOST} ![^.]+\.[^.]+\.[^.]+$
RewriteRule ^/.*$ http://www.mydomain.com/ [R,L]
和
如果[y]键入svn.mydomain2.com,则必须重定向到svn.mydomain.com
将是
RewriteCond %{HTTP_HOST} ^svn\.mydomain2\.com$
RewriteRule ^/.*$ http://svn.mydomain.com/ [R,L]
未测试。