我正在为我的网站开发一些搜索引擎优化,并使用category/this-cat.html
和category/this-cat-p2.html
等网址分别重定向到index.php?mode=viewCat&id=this-cat
和index.php?mode=viewCat&id=this-cat&start=10
。
问题是我的RewriteRule需要一个条件来检查URL中是否存在-p2
部分,然后返回0或p
之后的数字。
现行规则:
RewriteRule ^category/(.*?)\.html$ index.php?mode=viewCat&title=$1
我原本认为这个的正确语法是:
RewriteRule ^category/(.*?)(?(-p)(.*?)|0)\.html$ index.php?mode=viewCat&title=$1&start=$2
答案 0 :(得分:2)
你很亲密。我相信你要做的不是捕获可选的-p#
分组,而是想要数字(如果它存在)。组的非捕获标志是?:
前缀。
RewriteRule ^category/(.*?)(?:-p(\d+))?\.html$ index.php?mode=viewCat&title=$1&start=$2
注意:我使用\d
(数字),因为最好具体说明您要匹配的内容。 start
也会有数字或没有数字。您的服务器端代码更适合处理您描述的其余逻辑。