【问题标题】:issues with regex for .htaccess rules.htaccess 规则的正则表达式问题
【发布时间】:2011-12-26 06:39:27
【问题描述】:

我的网站在 .htaccess 中有类似的内容:

重写规则 ^([0-9]+)$profilescorta.php?t=$1 [L]

因此,如果用户正在访问如下链接:http:// url/1231231234 - 页面将正确显示

现在,如果有人尝试访问如下链接:http://url/123.123.1234 - 将显示 404 错误页面。

我已将此规则添加到 .htaccess 重写规则 ^([0-9]+).(.*) $1$2 [N]

如果有人访问:http://url/123.123.1234 - 页面正确显示,但现在问题是同一页面有 2 个不同的链接: http://url/123.123.1234 和 http://url/1231231234

当有人访问http://url/123.123.1234 时,我是否可以将其重定向到http://url/1231231234

谢谢, 波格丹

【问题讨论】:

  • 重定向意味着你需要发送http 301 header?您尝试匹配的确切数据是什么?是不是类似于 IP 地址?
  • 我修改了一些你的答案,我想我让它工作了。所以我改变了你的规则: RewriteRule ^([0-9]+)\.(.*) /$1$2 [R]

标签: .htaccess mod-rewrite


【解决方案1】:

新解决方案:

#Better 1 redirect /123.123.1234 -> /1231231234
#Assume phone number in this format: [3 Digits] Dot [3 Digits] Dot [4 Digits]
RewriteRule ^([0-9]{3})\.([0-9]{3})\.([0-9]{4})$ /$1$2$3 [R=301]

旧的不好的解决方案:

[Bad] Double redirect /123.123.1234 -> /123123.1234 -> /1231231234
RewriteRule ^([0-9]+).(.*) /$1$2 [R]

【讨论】:

  • 感谢您的回答。不幸的是,如果我把你提到的规则,一切都搞砸了。所以ideea是这样的,php查询是关于一个10位数长的电话号码,比如1231231234。现在如果有人输入http://url/123.123.1234(电话号码的这种格式),就会显示404错误页面因为我所做的查询不是针对 123.123.1234 而是针对 1231231234。如果有人在 url 中键入 123.123.1234 到 1231231234,我想重定向。示例:escortele.eu/0725073448,escortele.eu/0725.073.448
  • 我在从您那里获得 URL 规则后添加了更好的解决方案。这个限制性更强,只做一次重定向,旧的做双重重定向。
  • 好的,谢谢,我会检查并回复是否工作或现在。非常感谢您的帮助!
  • 重写规则 ^([0-9]{3})\.([0-9]{3})\.([0-9]{4})$ /$1$2$3 [ R = 301] - 这在我的情况下不起作用......不知道如何解释你理解......来自php脚本的查询是由格式为:1231231234的电话号码进行的。所以它就像profilescorta.php ?t=1231231234。规则: RewriteRule ^([0-9]+)$ profilescorta.php?t=$1 [L] 只是将 url 从 http://url/profilescorta.php?t=$1 重写为 http://url/1231231234 (其中 1231231234 是 t=$1 的参数,因此 $1 将是 1231231234)。抱歉不能解释得这么好,不。这里的字符非常有限,我的声誉只有 1
猜你喜欢
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 2018-06-01
相关资源
最近更新 更多