2013-04-22 92 views
4

我目前在htaccess文件中有以下內容,該文件將某些請求重定向到請求域的單個文件夾(如果文件不存在於根目錄中)。htaccess從%{HTTP_HOST}獲取域名到變量中,減去www

RewriteRule ^contact/?$ ASSETS/%{HTTP_HOST}/contact.php 

RewriteCond %{REQUEST_URI} !^/ASSETS/%{HTTP_HOST}/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /ASSETS/%{HTTP_HOST}/$1 
RewriteCond %{HTTP_HOST} ^(www.)?%{HTTP_HOST}$ 
RewriteRule ^(/)?$ ASSETS/%{HTTP_HOST}/index.php [L] 

當我的域名文件夾被命名爲喜歡的正常工作/ASSETS/www.domain1.com,/ASSETS/www.domain2.com等

不過,我已經建立了很多我的代碼已經與假設文件夾將被標記爲/ASSETS/domain1.com等(域名,減去www。)

我在想有一種方法可以將%{HTTP_HOST}中的域名轉換爲一個新變量並去掉www。部分(如str_replace或其他),但我發現的所有答案都圍繞基本重定向到www。或者沒有www。這是不會工作,因爲我仍然希望用戶從強制www訪問該網站。版。

我之前曾使用RewriteCond%{HTTP_HOST} ^(www。)?domain1.com $單獨運行每個域的規則,但現在有很多域,對每個域都做不到。

希望你能幫助!提前致謝。

回答

9

您可以用RewriteCond捕捉所需要的主機部分和在RewriteRule

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
RewriteRule ^$ ASSETS/%1/index.php [L] 
+1

的地方,我需要的,正則表達式需要一些調整這讓我用它作爲%1但這個概念是對的.. 工作的正則表達式是 RewriteCond%{HTTP_HOST} ^(?: www \。)?([a-z0-9 - ] + \。[az] +)[NC] – SamSebastian 2013-04-23 22:11:24