在mod_rewrite规则上添加尾部斜杠

时间:2010-12-29 09:15:13

标签: mod-rewrite

我是mod_rewrite的新手,我正试图制定自己的规则...... 我有这个简单的界限:

RewriteRule  ^concorso/(.*)/$    concorso/?iModule=13&iData=$1   [L]

它正在处理以下网址: http://www.mysite.com/concorso/2/ 但不是像 http://www.mysite.com/concorso/2 (没有斜杠)

我知道也许这是一个非常常见的问题,但我在网上找到的所有例子都是......这个简单规则的“超大”

那么,如何自动添加尾部斜杠?请注意以下规则:

RewriteRule    ^contatti/$    contatti/?iModule=10    [L]

自动添加斜线... 我也试过了:

RewriteRule  ^concorso/(.*)/?$    concorso/?iModule=13&iData=$1   [L]

(最后一个斜杠可选)但我得到Apache错误:

[Wed Dec 29 10:02:41 2010] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

127.0.0.1 - - [29/Dec/2010:10:02:41 +0100] "GET /concorso/2/ HTTP/1.1" 500 535

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

尝试限制模式将接受的字符,以防止您的模式与您要重写的模式匹配。例如,如果您只想匹配其中###是数字的网址/concorso/###

RewriteRule  ^concorso/([0-9]+)/?$    concorso/?iModule=13&iData=$1   [L]

更一般地说,这只能匹配没有查询字符串的URL:

RewriteRule  ^concorso/([^?]*)/?$    concorso/?iModule=13&iData=$1   [L]