.htaccess相同的网址有或没有/

时间:2009-10-08 05:17:43

标签: apache .htaccess mod-rewrite

我正在对我正在处理的网站上的许多网址进行痛苦的重写,但我注意到一个小问题:

RewriteRule ^domains/transfer$ ./cart.php?gid=11 [L,NC]

如果我转到此行,则导航:

http://my-site/domains/transfer

但它不适用于尾随/:

http://my-site/domains/transfer/

有没有办法可以更改RewriteCode以获取任一参数并转到同一页面。将同一行包含两次以包含'/'

似乎很浪费

任何帮助都将不胜感激。

干杯

2 个答案:

答案 0 :(得分:3)

将行更改为:

RewriteRule ^domains/transfer/?$ ./cart.php?gid=11 [L,NC]

魔法就在这里:/?并且允许前面的字符(在本例中为斜杠(/))是可选的。

如果您想在transfer之后找到符合条件的内容,请删除标记可允许匹配结束的美元符号($)。

答案 1 :(得分:0)

我建议您只允许一个网址表单,包含或不包含尾部斜杠的表单,如果格式错误则重定向:

# remove trailing slash
RewriteRule (.*)/$ /$1 [L,R=301]

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ /$0/ [L,R=301]