Htaccess Mod Rewrite:允许整数或特定单词

时间:2013-10-24 15:47:39

标签: .htaccess mod-rewrite

我正在使用.htaccess将流量隧道传输到我的index.php。以下是我正在使用的其中一条线:

RewriteRule ^page/([0-9]*)$ /index.php?&page=$1

我想要的只是数字值,和“全部”一词。因此正则表达式应匹配:

  • 页面/ 1
  • 页/ 15
  • 页/所有

如何才能对两个值进行匹配?一个简单的解决方案是([0-9al] *),但这并不完美,因为它也允许像'al9','lalalala'等值。谢谢!

2 个答案:

答案 0 :(得分:3)

[0-9]*也匹配零号,您必须使用+而不是*

要添加'all',请使用竖管:

 RewriteRule ^page/([0-9]+|all)$ /index.php?&page=$1

禁止'0':

 RewriteRule ^page/([1-9]{1}[0-9]*|all)$ /index.php?&page=$1

[1-9]{1}[0-9]*表示:

  • 一个数字1到9,然后是其他数字的不确定事件(0,1,...,无限制),甚至0
  • 所以它匹配一个数字(除了0)或
  • 10,11,12,...,20,21,...,23456

答案 1 :(得分:1)

您可以使用:

RewriteRule ^page/((?!0+$)[0-9]+|all)/?$ /index.php?page=$1 [L,QSA,NC]

这也可以避免重写/page/0 /page/00