2012-10-03 247 views
1

我在我的mac上使用apache服務器,一切正常。apache服務器:將所有url請求重定向到index.php

現在我有一個網頁,其index.php是相當複雜的: 在index.php,它期望url像:localhost/~username/hostname/page_a。 而page_a的內容其實是.php文件存放在content文件夾中。 所以在index.php,它只是解析page_a,並做一個include:''來呈現請求頁面。

但是在.htaccess中,重定向規則未正確配置。

例如,如果我點擊一個鏈接:localhost/~username/hostname/page_a, 有沒有什麼辦法來重定向URL以便index.php, ,並在同一時間,該網址依然會localhost/~username/hostname/page_a, 使index.php可以解析,並使其是否正確?

謝謝。

回答

3

這取決於index.php如何處理請求。如果它只是在$_SERVER變量中尋找'REQUEST_URI'來查找請求的文件,那麼您不需要傳遞任何東西。如果它查找查詢字符串參數,則您的重寫規則需要通過它。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php [L] 

或者,如果你需要通過它查詢字符串PARAM:

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

沒有R標誌或在規則的http://,在瀏覽器地址欄中的URL不會改變。如果某人在其瀏覽器中鍵入http://localhost/~username/hostname/page_a,則將/~username/hostname/page_a請求發送到服務器,重寫規則將在內部將其重寫爲/index.php,並且php腳本可以查看$_SERVER['REQUEST_URI']以查找/~username/hostname/page_a請求並正確路由它,或者在如果使用第二個規則,則使用$_GET['url']參數。

相關問題