【发布时间】:2016-10-13 07:12:24
【问题描述】:
我正在尝试这样做,以便如果 URL 的结尾包含围绕数字的任何内容(除了第一部分可以是数字、连字符或 ap 的任意组合),那么 url 将被重定向到任何围绕号码被取消了。
这是我的正则表达式:
RewriteRule ^all/[^p^P^0-9^\-]+([0-9]+).*$ /allof/$1 [R=301,NC,L]
如果我尝试了这些测试 URL,应该会发生重定向,但不会:
http://example.com/all/-a*1
http://example.com/all/plus100
如果我尝试了这个测试 URL,重定向不会发生,这是正确的:
http://example.com/all/p1-100
如果我尝试了这些测试 URL,则会发生重定向,这是正确的:
http://example.com/all/(100) - redirects to http://example.com/allof/100
http://example.com/all/minus100 - redirects to http://example.com/allof/100
也许我的正则表达式有问题。我尝试删除方括号中除第一个之外的额外插入符号,但这没有帮助,我不想只用 .* 替换方括号,因为这样我将无法捕获数字。我可能做错了什么?
【问题讨论】:
-
您能准确地说明您要做什么吗?如果可能,请提供重定向前后的示例 URL 列表。
-
在 URL 中,最右边斜线后面的所有内容都只能是数字。必须删除位于相同斜线和数字之间的任何内容(不是数字)。数字之后的任何东西(不是数字)也必须被删除。我试图编辑我的问题,但系统不允许。
-
您应该显示您的预期输出。例如,对于
http://example.com/all/p1-100,您的预期输出是什么...?
标签: regex apache .htaccess redirect mod-rewrite