为了争论,让我们假设:
- 我的域名是 mydomain.com
- 我有子域,例如 svn.mydomain.com
我想要:
- 如果用户输入 mydomain.com 以外的任何内容(例如 mydomain2.com),则必须重定向到 mydomain.com
- 如果用户输入任何没有子域的域,则必须重定向到 www.mydomain.com,请记住,此规则不得影响 svn.mydomain.com 等子域
- 如果类型为 svn.mydomain2.com,则必须重定向到 svn.mydomain.com
有什么帮助吗?
到目前为止的解决方案:
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。现在我只需要以下规则:
- 排除“localhost”被重定向到 www.namhost.com
- 将子域重定向更改为 namhost.com。例如:someSubDomain.parkeddomain.com 必须转到 someSubDomain.namhost.com。一个真实的例子:ftp.namhosting.com --> ftp.namhost.com
谢谢!
最佳答案
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]
关于.htaccess - 执行以下操作的 .htaccess 重定向代码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169625/