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]
你好,我有如下重写规则之一
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]