如何使用mod_rewrite重定向无效的URL?

时间:2012-08-26 11:34:56

标签: mod-rewrite

我是mod_rewrite正则表达式的新手。我的.htaccess文件中有以下几行:

RewriteRule ^gallery/([0-9]+)/ gallery.php?id=$1 [L]
RewriteRule ^gallery/ gallery.php [L]

当我打开http://127.0.0.1/gallery/时,一切正常,但当我打开http://127.0.0.1/gallery/some_string时,它会打开同一页面。如何强制将此类无效网址转到我的404页面。我需要第二行是严格的 - 在最后一个斜杠后没有多余的字符,第一个规则必须继续使用整数值。

任何想法如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

RewriteRule ^gallery/ gallery.php [L]

在此规则中,模式^gallery/匹配以“gallery /”开头的所有字符串,包括“gallery / some_string”。为了使其严格,为了确保它只匹配“gallery /”而没有别的,请使用$ metacharacter,它表示字符串的结尾:

RewriteRule ^gallery/$ gallery.php [L]

(您可能希望使用?运算符(RewriteRule ^gallery/?$ gallery.php [L])使最后一个斜杠可选,以确保http://example.com/gallery也可以正常工作 - 用户期望这种行为,即使它很草率。)