2012-08-15 67 views
1

我想創建一個重寫規則如下;國防部重寫 - 導致內部重定向

RewriteCond %{HTTP_HOST} ^dev$ [NC] 
RewriteRule ^(.*)$ test/$1 [L] 

當有人在http://dev/index.php實際上將被檢索的文件是http://dev/test/index.php進入。

但是,這似乎會導致內部重定向負載。

任何人都可以幫忙嗎?

回答

2

第一RewriteCond之前添加

RewriteCond %{REQUEST_URI} !^/?test 

...。

重寫規則中的[L]標誌(稍微違反直覺)會導致重寫過程再次從頭開始。您的當前規則將在每次迭代中匹配,並且mod_rewrite將進入無限循環。添加上面的RewriteCond意味着它只會在第一次迭代時匹配。

如果您正在Apache 2.3.9或更高版本上運行,您可以在重寫規則中使用[END]標誌而不是[L] - 這將導致mod_rewrite立即退出並避免該問題。如果可用,這實際上會是更好的解決方案,因爲上述RewriteCond會阻止您的規則適用於合法以test開頭的頁面。

+0

謝謝戴夫,這很好。非常明顯,當你想到它,但我有點新的htaccess重寫。 – 2012-08-15 16:00:13

+0

@SimonR請參閱我剛剛添加的編輯。 – DaveRandom 2012-08-15 16:00:37

+0

是的,這也是有意義的! – 2012-08-15 16:01:40