2014-01-09 112 views
0

爲了防萬一,我在win7上運行wamp。我試圖通過route.php路由所有請求以獲取乾淨的URL。下面是我的htaccess使用htaccess路由index.php

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{REQUEST_URI} !(auth|folder2) [NC] 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*) ./route.php?path=$1 [L] 

正如你所看到的規則應適用於所有文件,並且它沒有當我跑了它在我的舊WAMP安裝。現在將文件複製到新系統後,出於某種原因,該規則似乎適用於除index.php之外的所有鏈接。所以如果我嘗試http://localhost/proj,我不會在新系統中路由。有任何想法嗎?

而且有人問之前,是rewrite_module上,而htaccess正在讀取和執行的原因它的工作原理像http://localhost/proj/users其他所有環節,還因爲如果我嘗試把垃圾值htaccess的,它拋出一個漂亮的「內部服務器錯誤'。

+0

是不是因爲你引導到_route.php_而非_index.php_? – Loopo

+0

@Loopo我不確定你的意思,但我想要做的是通過'route.php'在內部加載'index.php',所以'localhost/proj'應該在內部被看作像'localhost/proj/route.php?index' – Aoi

回答

2

我猜你有一個文件夾中的index.php,這種情況:

RewriteCond %{SCRIPT_FILENAME} !-f 

...告訴Apache只執行,如果文件不存在重寫。

我建議或重命名文件,因爲你需要一個條件,路線如圖片,腳本等

靜態資產如果不存在的index.php(或index.htm [1])在該文件夾中,只需將route.php定義爲該目錄中的默認文件即可。在你的.htaccess:

DirectoryIndex route.php index.php index.html index.htm 

(請注意,這也將適用於任何子目錄以及)