如果我的网址是
http://www.example.com/book/book1/35.1/1
网址返回404未找到
如果我的网址是
http://www.example.com/book/book1/34/1
网址没问题
下面是我的.htaccess文件
Options +Indexes
RewriteEngine on
RewriteBase /book
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/(\d+)/([^/]+)$ index.php?id=$1&num=$2&page=$3 [L,QSA]
RewriteRule ^([^/]+)/(\d+)/?$ index.php?id=$1&num=$2 [L,QSA]
RewriteRule ^([^/]+)/?$ index.php?id=$1 [L,QSA]
我不确定为什么完全停止似乎不起作用,如何更改htaccess来处理此问题。
感谢
答案 0 :(得分:1)
问题是你的正则表达式只是在斜杠之间寻找数字。您可以将其更改为
^([^\/]+)\/(\d+(?:\.\d+)?)\/([^\/]+)$
演示:https://regex101.com/r/oF7aZ1/2
哪个会找到任何连续数字或小数点数((?:\.\d+)
)。我不确定htaccess是否支持非捕获组(更新:读取它似乎Apache 2确实支持非捕获组)。
所以也许
^([^\/]+)\/(\d+\.?\d*)\/([^\/]+)$
会更好。这种方法的缺陷是.
之后的数字是可选的。因此,例如3.
将是有效的,这不是真正的数字。