Mod rewrite 修改问题

Mod rewrite 修改问题,mod-rewrite,Mod Rewrite,我想创建一个带有分页的类别路径。URL如下所示 所有路径都应使用或不使用尾随斜杠(如果可能) (代表“音乐”类别) "娱乐及音乐" (代表“耳鼻喉科”的第5页,以及 音乐“) (代表“耳鼻喉科”的第5页,以及 音乐/音乐) 我试过类似的方法,但没用 RewriteRule ^category/(.*)/? /category.php?slug=$1&page=1 RewriteRule ^category/(.*)/(.*)/? /category.php?slug=$1&pag

我想创建一个带有分页的类别路径。URL如下所示

所有路径都应使用或不使用尾随斜杠(如果可能)

(代表“音乐”类别) "娱乐及音乐"

(代表“耳鼻喉科”的第5页,以及 音乐“)

(代表“耳鼻喉科”的第5页,以及 音乐/音乐)

我试过类似的方法,但没用

RewriteRule ^category/(.*)/? /category.php?slug=$1&page=1
RewriteRule ^category/(.*)/(.*)/? /category.php?slug=$1&page=$2
我怎么能做这样灵活的事情


提前感谢…

看起来您的第一个正则表达式与您的第二个正则表达式捕获的任何内容都匹配

/category/slugname/7/将匹配。*,其中$1设置为“slugname/7”

试着这样做:

RewriteRule ^category/([^/]*)/? /category.php?slug=$1&page=1
RewriteRule ^category/([^/]*)/(.*)/? /category.php?slug=$1&page=$2
RewriteRule ^category/([a-zA-Z0-9_-]+)/? /category.php?slug=$1&page=1
RewriteRule ^category/([a-zA-Z0-9_-]+)/([0-9]+)/? /category.php?slug=$1&page=$2
至少,或者稍微收紧你的火柴,像这样:

RewriteRule ^category/([^/]*)/? /category.php?slug=$1&page=1
RewriteRule ^category/([^/]*)/(.*)/? /category.php?slug=$1&page=$2
RewriteRule ^category/([a-zA-Z0-9_-]+)/? /category.php?slug=$1&page=1
RewriteRule ^category/([a-zA-Z0-9_-]+)/([0-9]+)/? /category.php?slug=$1&page=$2

这将限制您的slug至少为一个字母数字字符,同时允许“uu”和“-”,并且您的页码必须是数字。

看起来您的第一个正则表达式也与第二个正则表达式捕获的任何内容相匹配

RewriteRule ^category/([A-Za-z0-9_-]+)([/]?)$ /category.php?slug=$1&page=1
RewriteRule ^category/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&page=$2
RewriteRule ^category/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&subcat=$2&page=$3
/category/slugname/7/将匹配。*,其中$1设置为“slugname/7”

试着这样做:

RewriteRule ^category/([^/]*)/? /category.php?slug=$1&page=1
RewriteRule ^category/([^/]*)/(.*)/? /category.php?slug=$1&page=$2
RewriteRule ^category/([a-zA-Z0-9_-]+)/? /category.php?slug=$1&page=1
RewriteRule ^category/([a-zA-Z0-9_-]+)/([0-9]+)/? /category.php?slug=$1&page=$2
至少,或者稍微收紧你的火柴,像这样:

RewriteRule ^category/([^/]*)/? /category.php?slug=$1&page=1
RewriteRule ^category/([^/]*)/(.*)/? /category.php?slug=$1&page=$2
RewriteRule ^category/([a-zA-Z0-9_-]+)/? /category.php?slug=$1&page=1
RewriteRule ^category/([a-zA-Z0-9_-]+)/([0-9]+)/? /category.php?slug=$1&page=$2
这会将你的slug限制为至少一个字母数字字符,同时允许“u”和“-”,并且你的页码必须是数字

RewriteRule ^category/([A-Za-z0-9_-]+)([/]?)$ /category.php?slug=$1&page=1
RewriteRule ^category/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&page=$2
RewriteRule ^category/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&subcat=$2&page=$3
第一条规则应该涵盖他们只指定一个类别的情况

第二条规则应包括提供页面的类别

第三条规则应涵盖类别、子类别和页面。我不太清楚您希望如何填充子类别,所以我只是把它作为slug之后的另一个参数写出来

它们都允许可选的尾部斜杠

第一条规则应该涵盖他们只指定一个类别的情况

第二条规则应包括提供页面的类别

第三条规则应涵盖类别、子类别和页面。我不太清楚您希望如何填充子类别,所以我只是把它作为slug之后的另一个参数写出来


它们都允许一个可选的尾随斜杠。

非常感谢,但不幸的是不起作用,它只返回slug的第一部分“娱乐和音乐”。没有子类别或页码…有两种可能:首先,可能正则表达式的末尾应该有一个“$”(在?)之后,因此字符串必须在该点结束——否则,第一个正则表达式仍然匹配所有内容。第二,如果这不起作用,尝试切换两个规则的顺序,以便更具体的规则首先匹配。非常感谢,但不幸的是,它不起作用,只返回slug的第一部分“娱乐和音乐”。没有子类别或页码…有两种可能:首先,可能正则表达式的末尾应该有一个“$”(在?)之后,因此字符串必须在该点结束——否则,第一个正则表达式仍然匹配所有内容。其次,如果这不起作用,请尝试切换两个规则的顺序,以便更具体的规则首先匹配。