如何解决如何根据条件重写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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。