我知道這是一個非常高度討論的主題,但我無法弄清楚我使用我的搜索技巧做錯了什麼。htaccess的子域名無法按預期方式工作
用下面的文件夾結構既是domain.local
的根和board.domain.local
/
app/
bin/
board/
index.php
src/
vendor/
web/
index.php
這的.htaccess在/
文件夾
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^board.domain.local$
RewriteRule ^(.*)$ board/$1 [QSA,L]
RewriteCond %{HTTP_HOST} ^domain.local$
RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>
訪問board.domain.local
當我得到一個內部服務器錯誤。訪問domain.local
完美工作,並將查詢重定向到web/
。
爲什麼第一次重寫不起作用?
我會對此做一個稍微不同的解釋:重寫總是在URI上下文中完成,但是被修改爲FS路徑。如果您沒有指定正確的RewriteBase來幫助引擎將URI映射到當前目錄,那麼引擎可能(並且經常)會錯誤地映射此映射。但除了一般問題陳述中的+1之外。這通常不是很好理解。 – TerryE 2012-03-12 23:21:12
[@Kaz。我是否會生氣或者我剛剛對你的一個不存在的評論?]是的,我同意路徑名被刪除,然後重新應用,就像你從重寫日誌中看到的級別大於5的IIRC。但是這是一個僞URI,當它出錯時,我有很多實例。所以(i)如你所說總是指定一個基地,並且(ii)在規則之後總是使用[L] - 我剛剛看到太多的情況,如果你不立即強制內部重定向。 – TerryE 2012-03-12 23:50:44
+1 Kaz很好的答案 – 2012-03-13 09:29:38