Apache 如何在.htaccess中添加正确的页面重写规则?

Apache 如何在.htaccess中添加正确的页面重写规则?,apache,.htaccess,url-rewriting,Apache,.htaccess,Url Rewriting,我正试图在我的网站上做一个分页系统 以前,我有: RewriteRule ^famille/([^/]*)-([^-]*)\.html$ /?fond=famille&id_rubrique=$1 [L] 我可以这样进入我的页面: 现在,我为分页添加了一条规则: RewriteRule ^famille/([^/]*)-([^-]*)-([^-]*)\.html$ /?fond=famille&id_rubrique=$1&page=$3 [L] 如果继续进行: (

我正试图在我的网站上做一个分页系统

以前,我有:

RewriteRule ^famille/([^/]*)-([^-]*)\.html$ /?fond=famille&id_rubrique=$1 [L]
我可以这样进入我的页面:

现在,我为分页添加了一条规则:

RewriteRule ^famille/([^/]*)-([^-]*)-([^-]*)\.html$ /?fond=famille&id_rubrique=$1&page=$3 [L]
如果继续进行:

(对于第二页)它起作用了

但是如果我在第一页,我会得到404错误:


如何解决这个问题?(我需要访问第一页而不写页码)

页码前的连字符是您的问题。将其设置为可选,请尝试以下操作:

RewriteRule ^famille/([^/]*)-([^-]*)-?([^-]*)\.html$ /?fond=famille&id_rubrique=$1&page=$3 [L]

你是同时使用这两条规则还是只使用一条

如果按此顺序使用这两个规则:

RewriteRule ^famille/([^/]*)-([^-]*)-([^-]*)\.html$ /fond=famille&id_rubrique=$1&page=$3 [L]
RewriteRule ^famille/([^/]*)-([^-]*)\.html$ /fond=famille&id_rubrique=$1 [L]
那么第一组就不够排他性了。贪婪匹配将匹配第一个
-
。试试这个:

RewriteRule ^famille/([^-/]*)-([^-]*)-([^-]*)\.html$ /fond=famille&id_rubrique=$1&page=$3 [L]
RewriteRule ^famille/([^-/]*)-([^-]*)\.html$ /fond=famille&id_rubrique=$1 [L]
或者干脆交换规则


PS:根据您可能想省去
.html

这似乎不起作用。如果我转到这里:由于@TobiX解释的原因,页面不在$\u GETYep中,第二个匹配项“吃”了连字符,并且页面的编号没有达到预期的位置。很抱歉,但我看到您的问题已经解决。啊,只需从我的测试设置中复制并粘贴它;)