2014-05-05 69 views
1

我知道你可以有一個網址,如foo.com/me/data/key1/val1/key2/val2與隨機數量的鍵/值對。我認爲這是一個遞歸的規則需要做到這一點,但到目前爲止,我有:htaccess重寫鍵/值對

RewriteRule ^(data)/([^/]*)/([^/]*)(/.*)?$ /$1/$4?$2=$3 [L,QSA,NC] 
RewriteRule ^(data)/(/[^/]+|[^/]+/|/?)$ /datahandler.php [L,QSA] 

但這是行不通的。我收到一個404錯誤。我需要url的data部分區別於其他請求。

這是網站目前的結構:

Site Root 
- .htaccess (1) 
- index.php 
- /Me 
- - .htaccess(2) 
- - index.php 
- - /Scripts 
- - - handler.php 

htaccess的文件的內容:

.htaccess (1) 
    RewriteEngine On 
    RewriteRule ^Me/?(.*)$ /Me/$1 [NC,L] 

.htaccess (2) 
    RewriteEngine On 
    RewriteRule ^(data)(?:Scripts\/handler\.php)?/([^/]+)/([^/]*)(/.*)?$ /$1Scripts/handler.php/$4?$2=$3 [L,QSA,NC] 

回答

1

你可以用一條規則來做到這一點。將此放在您的/me/.htaccess文件夾:

RewriteEngine On 
RewriteBase /Me/ 

RewriteRule ^(data|Scripts/handler\.php)/([^/]+)/([^/]*)(/.*)?$ Scripts/handler.php/$4?$2=$3 [L,QSA,NC] 
+0

可惜的是並沒有真正的工作,我已經編輯更詳細一點我的問題,如果你可能從這項工作? –

+0

好吧,讓我看看你編輯的問題。 – anubhava

+0

現在嘗試編輯答案,我相信你的文件夾是'/我/'不是'/我/' – anubhava

0

嘗試:

RewriteRule ^(data)/([^/]+)/([^/]+)(?:/(.+)|)$ /$1/$4?$2=$3 [L,QSA,NC] 
RewriteRule ^(data)/?$ /datahandler.php [L] 

你有正確的第一條規則,但第二條規則有太多的斜槓。