0

网址: http://localhost/url/of/the/keyword/whatever/

RewriteRule ^url/of/the/keyword/([a-z]+)/?$ ?keyword=$1 [L]  
// php  
echo $_GET['keyword'];    
// outputs **whatever** (OK)
RewriteRule ^url/of/the/keyword/(.*)/?$ ?keyword=$1 [L]  
// php  
echo $_GET['keyword'];  
// outputs **whatever/** (with a trailing slash, which is not expected)

谁能解释为什么第二个条件有一个斜杠?


另外,如何允许百分比登录 url 重写?

http://localhost/url/of/the/keyword/%40%23%24/

RewriteRule ^url/of/the/keyword/([0-9a-zA-Z-.%])/?$ ?keyword=$1 [L]

上述规则不起作用。任何人都可以更正此问题,使其允许使用 aZ、0-9、点、连字符和百分号吗?

谢谢!

4

1 回答 1

2

你得到/第二个RewriteRule是因为.*贪婪。也就是说,它贪婪地捕获尾部斜杠,因为您已将其标记为 optional /?。最好具体说明您的模式(如第一个RewriteRule)以避免这种情况。

你匹配的模式可以接受任何东西。请记住,它必须是一个有效的 URL。问题是你忘记了量词。所以你只匹配分组中的一个字符。

添加+

RewriteRule ^url/of/the/keyword/([0-9a-zA-Z\-.%]+)/?$ ?keyword=$1 [L]
于 2011-05-21T21:00:38.690 回答