2014-10-20 64 views
1

我已經在Windows 8筆記本電腦(WAMP服務器)上運行Apache 2.4.4,並且發現了.htaccess mod_rewrite規則的一個非常奇怪的行爲。Apache重寫空正則表達式(根)

我想將我的網站的根重定向到特定的文件。我的.htaccess看起來是這樣的:

RewriteEngine On 
RewriteBase/
RewriteRule $^ /static/home.php [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ router.php?url=$1 [L,QSA] 

這隻有有一個在根目錄沒有index.php文件。當我創建index.php文件時,Apache將空路徑直接重定向到索引文件,並且不會打擾第一個RewriteRule。

有沒有辦法讓這兩個RewriteRules和index.php文件一起工作?換句話說,我的例子有效,但我想將router.php重命名爲index.php並保持兩個RewriteRules正常工作。

謝謝!

回答

1

您只需調整你的正則表達式模式在這兩個情況的工作:

DirectoryIndex something-else.php 
RewriteEngine On 

RewriteRule ^$ /static/home.php [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 
+0

沒錯,這可以做到這一點。不幸的是我不能使用它,因爲我可能已經過分簡化了我的例子。我需要通過index.php文件(我的網站的路由器)處理其他URL。我要更新我的問題。你知道Apache爲什麼這麼做嗎? – koubic 2014-10-20 14:43:44

+0

我會等待您的修改建議您一些可能的解決方法 – anubhava 2014-10-20 14:45:42

+0

好吧現在嘗試我更新的代碼。 – anubhava 2014-10-20 14:59:15