如何根据条件重写URL?

问题描述

我试图按照下面的描述在 Apache 中编辑 URL,但是我没有成功。

如果 URI 以字母 'a' 开头且第三位数字不是 '7' 且总位数为 6 然后应该将 url http://example.com/a/123456/ 重写为 http://example.com/sixdigits.php

如果 URI 以字母 'b' 开头且第三位数字不是 '7' 且总位数为 4,则 url http://example.com/b/1234/ 应改写为 http://example.com/fourdigits.php

这是我对 .htaccess 文件的尝试。

RewriteRule ^a/[0-9]+/$  sixdigits.php 
RewriteRule ^b/[0-9]+/$  fourdigits.php

解决方法

您能否尝试使用所示示例进行以下操作、编写和测试。请确保在测试您的网址之前清除浏览器缓存。

RewriteEngine ON
RewriteRule ^a/([0-9]{2})([012345689])([0-9]{3})/?$ sixdigits.php [NC,L]
RewriteRule ^b/([0-9]{2})([012345689])([0-9])/?$  fourdigits.php [NC,L]
,

另一个正则表达式:

RewriteEngine On

RewriteRule ^a/\d{2}[^7\D]\d{3}/?$ sixdigits.php [L]

RewriteRule ^b/\d{2}[^7\D]\d/?$ fourdigits.php [L]
  • [^7\D] 将匹配除 7 之外的任何数字
,

您可以使用:

  • [^7] 表示 NOT 7
  • \d 表示 [0-9]
  • {2} 等表示two of the preceding character

因此:

如果 URI 以字母 a 开头并且第三个数字不是 7 总位数是 6 然后 url http://example.com/a/123456/ 应该是 重写为 http://example.com/sixdigits.php

RewriteRule ^a/\d{2}[^7]\d{3}/?$  sixdigits.php

如果 URI 以字母 b 开头并且第三个数字不是 7 总位数是 4 然后 url http://example.com/a/1234/ 应该是 重写为 http://example.com/fourdigits.php

RewriteRule ^b/\d{2}[^7]\d/?$  fourdigits.php

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...