我有以下重写规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/(.+)/(.+)$ /index.php?page=$1&action=$2&other=$3&ajax=0 [L]
当我去这个网址时:
http://www.example.com/test/main/cat/monkey
我的print_r()
看起来像这样:
Array
(
[page] => test/main
[action] => cat
[other] => monkey
[ajax] => 0
)
但我希望看到的输出如下:
Array
(
[page] => test
[action] => main
[other] => cat/monkey
[ajax] => 0
)
在“行动”之后应该将多少项目com附加到“其他”我的重写有什么问题?
答案 0 :(得分:1)
这是因为.+
是贪婪的,所以它会尽可能多地吞噬尽可能多的文本,同时尽可能地满足表达式的其余部分。您可以将模式更改为[^/]+
,如果您不希望它匹配斜杠:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/(.+)$ /index.php?page=$1&action=$2&other=$3&ajax=0 [L]