URL 重写行为异常

URL Rewrite behaving strange

你好,我有如下重写规则之一

RewriteRule ^([^/.]+)/?$ /cityres?city= [L]

这让 URL 和 http://example.com/value-of-city 一样,而且效果很好。

但是我面临的问题是,如果用户输入

`http://example.com/anyrandomvalue` 

然后 URL 的行为与

相同
`http://example.com/value-of-city` 

并尝试根据 anyrandomvalue

获取结果

我怎样才能避免同样的情况?

您可以将正则表达式限制为某些允许的字符,例如单词字符和连字符:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ /cityres?city= [L,QSA]