如何将htaccess文件写入wildcard文件夹到子域

时间:2012-11-14 04:23:17

标签: .htaccess redirect subdomain directory wildcard

我正在尝试将所有文​​件夹(使用通配符)重定向到其子域。例如:

  

www.mywebsite.com/folder1到folder1.mywebsite.com/
  www.mywebsite.com/folder2到folder2.mywebsite.com/
  www.mywebsite.com/folder3到folder3.mywebsite.com /

现在没有为每一个规则编写规则,有没有办法将它们全部重定向到各自的子域?

我试过了:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.mywebsite\.com$
RewriteRule ^(.*)$ /%1/$1 [QSA]

但它给了我一个内部错误500

1 个答案:

答案 0 :(得分:2)

您需要保持规则不循环,使用条件首先检查/%1/$1是否实际存在, URI尚未以%1开头

所以:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.mywebsite\.com$
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
RewriteRule ^(.*)$ /%1/$1 [QSA]

或者:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.mywebsite\.com$
RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1
RewriteRule ^(.*)$ /%1/$1 [QSA]

!^/([^/]+)/([^:]*):\1表达式对URI中的第一个文件夹进行分组,并将其与\1反向引用。如果它们相同,那么URI中的第一个文件夹是%1,它反向引用到上一个匹配(\w+)