2009-06-29 177 views
2

我試圖實現使用.htaccess文件和通配符子域,使的.htaccess通配符子域

http://subdomain.example.com被映射到http://example.com/index.php/accounts/subdomain/的解決方案。我的規則看起來像這樣:

RewriteCond %{HTTP_HOST} !www.example.com [NC] 
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC] 
RewriteRule ^(.*/) /index.php [PT,L] 

哪些工作,但無視一切。當我嘗試附加任何規則例如:

RewriteRule ^(.*/) /index.php/hello [PT,L] 

我得到500內部服務器錯誤。我如何得到這個工作?

回答

3

你可能需要從規則中排除index.php

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com$ [NC] 
RewriteRule !^index\.php($|/) index.php/accounts/%2%{REQUEST_URI} [PT,L] 
1

試着改變你的RewriteRule

RewriteRule ^/(.*)$ /index.php/accounts/%1/$1 [PT] 

將在URL改寫爲一個包含子域名和原始請求URI。

編輯:也許它需要

RewriteRule ^(.*)$ /index.php/accounts/%1/$1 [PT] 

在評論中提到。

+0

我試過,但它似乎沒有被解僱,甚至當我的index.php改到別的東西。 – Zahymaka 2009-06-29 18:32:01

+0

哦......也許你需要在.htaccess中使用模式^(。*)$(無斜槓)。 (如果可以的話,我建議將這些指令放在主服務器配置文件中)。 – 2009-06-29 19:47:11

+0

請參見下文。感謝所有的幫助! – Zahymaka 2009-06-29 21:48:47

1

這是我用來在我自己的網站上重定向子域名的代碼的改編。我沒有聲稱這是最好的做法,但它的工作原理;

RewriteCond %{HTTP_HOST} ^(.*)\.com$ [NC] 
RewriteCond %1 !^(www)\.example$ [NC] 
RewriteRule ^.*$ http://www.example.com/index.php/accounts/%1/ [R=301,L]