【问题标题】:Add a trailing slash on a mod_rewrite rule在 mod_rewrite 规则上添加尾部斜杠
【发布时间】:2011-05-31 23:17:31
【问题描述】:

我对 mod_rewrite 很陌生,我正在尝试制定自己的规则... 我有这么简单的一行:

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

它正在使用以下 URL: 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] 由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。

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

感谢您的帮助!

【问题讨论】:

  • 这个错误是因为你在重写你的URL时遇到了一个循环,重写的URL也符合你的规则。

标签: mod-rewrite


【解决方案1】:

尝试限制模式将接受的字符,以防止您的模式匹配您正在重写的内容。例如,如果您只想匹配 url /concorso/### 其中### 是数字:

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

更一般地说,这将仅通过匹配没有查询字符串的 URL 来工作:

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

【讨论】:

  • 感谢 cdhowie,第一个完美运行,我还用它增强了规则,包括一些文本:RewriteRule ^concorso/(.*)/([0-9]+)/?$ concorso/ ?iModule=13&iData=$2 [NC,L] 第二个例子还是报错
猜你喜欢
  • 2012-09-25
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 2018-11-18
  • 2012-08-03
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多