1

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

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

我想要的是只允许数值和单词 'all'。所以正则表达式应该匹配:

  • 页/1
  • 页/15
  • 页/全部

如何实现对这两个值的匹配?一个简单的解决方案是 ([0-9al]*),但这并不完美,因为它还允许使用 'al9'、'lalalala' 等值。谢谢!

4

2 回答 2

3

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

要添加“全部”,请使用管道:

 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
于 2013-10-24T15:54:28.697 回答
1

您可以使用:

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

这也将避免重写/page/0 /page/00

于 2013-10-24T15:53:03.437 回答