错误的Htaccess重定向

时间:2015-11-20 14:38:01

标签: regex apache .htaccess mod-rewrite

我正在使用这个htaccess代码..

RewriteRule ^city/barcelona ?what=2&type=barcelona
RewriteRule ^city/newyork ?what=2&type=newyork
RewriteRule ^city/paris ?what=2&type=paris
RewriteRule ^city/london ?what=2&type=london
RewriteRule ^city/milan ?what=2&type=milan

RewriteRule ^city ?what=3 [L]

但是,当我打开 www.example.com/city/tokyo 时,会打开 www.example.com/city (没有东京选项..它必须返回404页面)

如何更正我的htaccess代码?

(例如..我可以这样说:如果城市是newyork,巴黎或伦敦,请执行此重写规则.. else = 404)

1 个答案:

答案 0 :(得分:1)

由于您的规则中没有使用锚点,因此发生了这种情况。因此,您的最后一条规则始终匹配以`/ city。

开头的任何URI

这样做:

RewriteRule ^city/barcelona/?$ ?what=2&type=barcelona [L,QSA]
RewriteRule ^city/newyork/?$ ?what=2&type=newyork [L,QSA]
RewriteRule ^city/paris/?$ ?what=2&type=paris [L,QSA]
RewriteRule ^city/london/?$ ?what=2&type=london [L,QSA]
RewriteRule ^city/milan/?$ ?what=2&type=milan [L,QSA]

RewriteRule ^city/?$ ?what=3 [L,QSA]