Apache 复杂的htaccess重写规则-从哪里开始?
我以前在这里问过关于mod_rewrite的问题,得到了完美的答案,但现在我需要做一些更复杂的事情,并且真的需要了解mod_rewrite的人的建议 到目前为止,我的重写规则如下所示:Apache 复杂的htaccess重写规则-从哪里开始?,apache,url,.htaccess,mod-rewrite,slug,Apache,Url,.htaccess,Mod Rewrite,Slug,我以前在这里问过关于mod_rewrite的问题,得到了完美的答案,但现在我需要做一些更复杂的事情,并且真的需要了解mod_rewrite的人的建议 到目前为止,我的重写规则如下所示: RewriteRule ([a-zA-Z_-]+)/([0-9]?) index.php?cat=$1&page=$2 它显示的URL如下:/categoryname并显示类似于/categoryname/1/的页面 但是我真的很想修改规则来处理子类别,比如/categoryname/subcatego
RewriteRule ([a-zA-Z_-]+)/([0-9]?) index.php?cat=$1&page=$2
它显示的URL如下:/categoryname
并显示类似于/categoryname/1/
的页面
但是我真的很想修改规则来处理子类别,比如/categoryname/subcategoryname/
,并且仍然可以处理页面系统(subcat/2/
),但我似乎无法理解这一点
如果您在主类别等上,则需要忽略子类别重写
希望有人能帮助我。我会使用以下规则:
RewriteRule [a-zA-Z_-]+/([a-zA-Z_-]+)/([0-9]?) index.php?cat=$1&page=$2 [L]
RewriteRule ([a-zA-Z_-]+)/([0-9]?) index.php?cat=$1&page=$2 [L]
RewriteRule ^([a-zA-Z_-]+)/([a-zA-Z_-]+)/(([1-9][0-9]*)/)?$ index.php?cat=$1&subcat=$2page=$4
RewriteRule ^([a-zA-Z_-]+)/(([1-9][0-9]*)/)?$ index.php?cat=$1&page=$3
对于起始(
^
)和字符串结尾($
)的断言,意外应用其中一条规则不会产生歧义。([1-9][0-9]*)/)?
部分用于可选分页。我将使用以下规则:
RewriteRule ^([a-zA-Z_-]+)/([a-zA-Z_-]+)/(([1-9][0-9]*)/)?$ index.php?cat=$1&subcat=$2page=$4
RewriteRule ^([a-zA-Z_-]+)/(([1-9][0-9]*)/)?$ index.php?cat=$1&page=$3
对于起始(
^
)和字符串结尾($
)的断言,意外应用其中一条规则不会产生歧义。([1-9][0-9]*)/)?
部分用于可选分页。这很好,但我真的不想使用cat和subcat变量,是否可以将subcat名称提供给cat变量,但如果不存在subcat,则使用第一个cat?很好奇,如果我想要第三个cat,我会在末尾添加/([a-zA-Z-])/([0-9])?好的,更像是在前面添加另一个[a-zA-Z_-]+/
。同样的模式,在任何情况下。嗨,我只是想澄清一下,我会在语句的开头添加第三个(就在规则之后),或者更进一步,因为我似乎无法让它工作…对。它应该是RewriteRule[a-zA-Z_-]+/[a-zA-Z_-]+/([a-zA-Z_-]+)/([0-9]?)index.php?cat=$1&page=$2[L]
。这很好,但我真的不想使用cat和subcat变量,是否可以将subcat名称提供给cat变量,但如果不存在subcat,就使用第一个cat?只是好奇如果我想要第三个cat,我会添加它吗/([a-zA-Z_-]+)/([0-9]?)结尾?好吧,更像是在前面添加另一个[a-zA-Z_-]+/
。无论如何都是相同的模式。嗨,为了澄清一下,我会在语句的开头添加第三个(就在规则之后)还是更进一步,因为我似乎无法让它工作…对。这将是重写规则[a-zA-Z-]+/[a-zA-Z-]+)/([0-9]?)index.php?cat=$1&page=$2[L]
。