2015-03-31 47 views
0

我使用的是MVC微架構的自定義重寫規則,我有以下的.htaccess規則:在PHP微MVC框架

Options -MultiViews 
Options -Indexes 

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

這一切改寫到index.php URL =(例如,用戶/註冊/)

在一個名爲控制器「檔案」我有一個動作「視圖」(即需要2個參數),這意味着該URL通常是:

profile/view/arg1/arg2 

什麼,我試圖做的是來hava一個更友好的網址李柯:

profile/1/profile-name 

,但是當我嘗試以下方法:

RewriteRule ^profile/([0-9]+)/(.*)/?$ profile/view/$1/$2 [NC,L] 

它無法正常工作。

換句話說,我只是試圖重寫原始網址以刪除「視圖」操作,以便任何人只要輸入配置文件ID(arg1)和名稱(arg2)即可訪問該網址。

回答

1

你實際上在做什麼是行不通的,因爲你正在翻譯爲一個友好的網址,但不是index.php,因爲你將它定義爲L規則,那麼它會離開profile/view/1/test,這是不存在的,所以你可以與你的最後一個規則,所以它讀取結合起來:

RewriteRule ^profile/([0-9]+)/(.*)/?$ profile/view/$1/$2 [NC] 
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

而且由於第一場比賽將改變URL,它會以正確的格式第二個規則進行傳遞。或者你可以只寫正確的目標:

RewriteRule ^profile/([0-9]+)/(.*)/?$ index.php?url=profile/view/$1/$2 [NC,L] 

希望有所幫助

+0

實際上你可能想QSA添加到您的個人資料視圖鏈接爲好,以防萬一,即'資料/ 1 /測試格式= json'然後將映射到'index.php?url = profile/view/1/test&format = json' – 2015-04-01 00:11:35