1
我想創建一個重寫規則如下;國防部重寫 - 導致內部重定向
RewriteCond %{HTTP_HOST} ^dev$ [NC]
RewriteRule ^(.*)$ test/$1 [L]
當有人在http://dev/index.php
實際上將被檢索的文件是http://dev/test/index.php
進入。
但是,這似乎會導致內部重定向負載。
任何人都可以幫忙嗎?
我想創建一個重寫規則如下;國防部重寫 - 導致內部重定向
RewriteCond %{HTTP_HOST} ^dev$ [NC]
RewriteRule ^(.*)$ test/$1 [L]
當有人在http://dev/index.php
實際上將被檢索的文件是http://dev/test/index.php
進入。
但是,這似乎會導致內部重定向負載。
任何人都可以幫忙嗎?
第一RewriteCond
之前添加
RewriteCond %{REQUEST_URI} !^/?test
...。
重寫規則中的[L]
標誌(稍微違反直覺)會導致重寫過程再次從頭開始。您的當前規則將在每次迭代中匹配,並且mod_rewrite將進入無限循環。添加上面的RewriteCond
意味着它只會在第一次迭代時匹配。
如果您正在Apache 2.3.9或更高版本上運行,您可以在重寫規則中使用[END]
標誌而不是[L]
- 這將導致mod_rewrite立即退出並避免該問題。如果可用,這實際上會是更好的解決方案,因爲上述RewriteCond
會阻止您的規則適用於合法以test
開頭的頁面。
謝謝戴夫,這很好。非常明顯,當你想到它,但我有點新的htaccess重寫。 – 2012-08-15 16:00:13
@SimonR請參閱我剛剛添加的編輯。 – DaveRandom 2012-08-15 16:00:37
是的,這也是有意義的! – 2012-08-15 16:01:40