我知道你可以使用foo.com/me/data/key1/val1/key2/val2
这样的网址,其中包含随机数量的键/值对。我认为这是完成此任务所需的递归规则,但到目前为止我有:
RewriteRule ^(data)/([^/]*)/([^/]*)(/.*)?$ /$1/$4?$2=$3 [L,QSA,NC]
RewriteRule ^(data)/(/[^/]+|[^/]+/|/?)$ /datahandler.php [L,QSA]
但这不起作用。我收到404错误。我需要网址的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]
答案 0 :(得分:1)
您只需一条规则即可。将其放在/me/.htaccess
文件夹中:
RewriteEngine On
RewriteBase /Me/
RewriteRule ^(data|Scripts/handler\.php)/([^/]+)/([^/]*)(/.*)?$ Scripts/handler.php/$4?$2=$3 [L,QSA,NC]
答案 1 :(得分:0)
尝试:
RewriteRule ^(data)/([^/]+)/([^/]+)(?:/(.+)|)$ /$1/$4?$2=$3 [L,QSA,NC]
RewriteRule ^(data)/?$ /datahandler.php [L]
你做对的第一条规则,但第二条规则有太多斜线。