【问题标题】:Apache URL Rewriting little bit complexApache URL 重写有点复杂
【发布时间】:2015-09-23 15:27:00
【问题描述】:

我想根据特定的模型重写一个 url。 来自:

http://myhost/aa/bb/value1?var2=value2&var3=value3

收件人:

http://myhost/aa/bb/index/index?var1=value1&var2=value2&var3=value3
  • value1: [:0-9TZ-]
  • 值2:[0-9]
  • 值3:[0-9]

这是我认为不错的解决方案:

RewriteRule ^/?([\:0-9TZ-]*)\?(.*)$ /aa/bb/index/index?var1=$1&$2 [R,L]

但是,这是我得到的错误(我一个人试过):

  • : : 给我一个 404 错误(aa/bb/2015-09-15T10:00Z not found)
  • \?(.*)$&$2:给我一个 404 错误(aa/bb/2015-09-15T1000Z not found,而我正在寻找 @987654321 @)

但如果我尝试使用它会起作用:

RewriteRule ^/?([0-9TZ-]*) /aa/bb/index/index?var1=$1 [R,L]

http://myhost/aa/bb/2015-09-15T1000Z

非常感谢任何帮助。

昆汀

【问题讨论】:

  • 不是: 转义为%3A
  • 如果我将“:”替换为“%3A”,也会遇到同样的问题。

标签: apache .htaccess url-rewriting


【解决方案1】:

您无法匹配重写规则中的查询字符串,但由于您根本没有更改查询字符串,您可以简单地使用第二次尝试并包含 QSA 标志,以便现有的查询字符串被附加:

RewriteRule ^/?([0-9TZ:-]*) /aa/bb/index/index?var1=$1 [R,L,QSA]

您还可以在方括号中包含: 以包含冒号。在通过重写规则发送 URI 之前,任何 URL 编码都会被解码。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-10-30
  • 2021-08-03
  • 2012-07-11
  • 2011-06-03
  • 1970-01-01
  • 2011-03-17
  • 2017-05-17
  • 2018-02-20
相关资源
最近更新 更多