我正在運行通配符子域。該網站的目標是運行一個虛擬子域。這個功能應該是當主站點的文件 被調用時,它們將被重寫爲乾淨的URL。但是當我調用像xyz.doamin.com/my-file.php這樣的子域 相同的文件時,這應該被重寫,就像它調用該文件時使用子域名的參數,如 domain.com/my-file。 PHP?變種= XYZ。目前我所做的文件調用是這樣的用某些參數重定向文件請求的子域和主站點?
Options +FollowSymLinks
RewriteEngine on
## Redirecting all non-www domains to www.domain.com
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,NC,L]
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ http://www.domain.com%{REQUEST_URI}?var=%1 [L]
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^(.*)$ http://www.domain.com%{REQUEST_URI}?%{QUERY_STRING}&var=%1 [L]
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ http://www.domain.com/index.php?subdomain=%1 [L]
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^(.*)$ http://www.domain.com%{REQUEST_URI}?%{QUERY_STRING}&subdomain=%1 [L]
這是拋出一個500內部錯誤的文件調用。
錯誤日誌有這一行:: mod_rewrite的:達到內部重定向的最大數量。假設配置錯誤。如果需要,使用'RewriteOptions MaxRedirects'來增加限制。, – HardCode
是的,這將是你的規則集4.它永遠不會改變'HTTP_HOST',所以它的結果會一直匹配。正如我所說,你最好完全拋棄它。 – Sodved
'@ Sodved'請參閱編輯的代碼。你的意思是? – HardCode