HOWTO與htacess使這個:的.htaccess的泛域名指向子目錄
a.domain.com -> domain.com/a
b.domain.com -> domain.com/b
.
.
.
z.domain.com -> domain.com/z
我嘗試:
RewriteCond %{HTTP_HOST} ^(.*).domain.com$ [NC]
RewriteRule (.*) %1/$1 [L]
但500錯誤
HOWTO與htacess使這個:的.htaccess的泛域名指向子目錄
a.domain.com -> domain.com/a
b.domain.com -> domain.com/b
.
.
.
z.domain.com -> domain.com/z
我嘗試:
RewriteCond %{HTTP_HOST} ^(.*).domain.com$ [NC]
RewriteRule (.*) %1/$1 [L]
但500錯誤
試試這個:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteRule ^(.*)$ %1/$1 [L,QSA]
可能的問題:
RewriteEngine on
?mod_rewrite
已安裝/啓用?非常相似:mod_rewrite is ignoring rules in subdirectories
不幸的是,你得到了規則是不行的(準確地說:他們實際工作 - URL重寫得到了..但隨後阿帕奇看到[L]
標誌後它去另一個迭代..它再次被重寫......並且再次 - 進入無休止的循環,Apache必須在某個時刻斷開)。
你必須添加一些條件,這將完全打破迭代。這樣做的可能性很少(取決於其他規則,你可以在這裏閱讀更多信息 - performance impact of order of rewrite rules when using apache mod_rewrite)。
我已經修改了規則,增加了2個條件,使得它只重寫目標DOES EXIST。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
RewriteRule (.*) %1/$1 [L,QSA]
所以..它是如何工作的。我們將使用此URL作爲示例:http://home.domain.com/kaboom.txt
。
http://home.domain.com/home/kaboom.txt
(完整的URL)。 Apache進入下一次迭代。在那裏檢查domain.com/home/home/kaboom.txt
是否存在。很可能不會(除非您的子文件夾與子域具有相同的名稱)並且不會發生更多重寫 - 完成工作。