Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 复杂的htaccess重写规则-从哪里开始?_Apache_Url_.htaccess_Mod Rewrite_Slug - Fatal编程技术网

Apache 复杂的htaccess重写规则-从哪里开始?

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

我以前在这里问过关于mod_rewrite的问题,得到了完美的答案,但现在我需要做一些更复杂的事情,并且真的需要了解mod_rewrite的人的建议

到目前为止,我的重写规则如下所示:

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]