htaccess的重写通两个变量或者一个取决于如果两者都可用?重写、变量、两者、两个

2023-09-02 00:53:16 作者:看不见你。和未来

我想传递的第一个目录作为一个变量和子目录另一个变量。

I want to pass first directory as a variable and subdirectory as another variable.

它的工作原理时,与这两个目录的URL(/事/ something2),但我得到一个错误404当我尝试只有一个(/某事)。

It works when for urls with both directories (/something/something2) but I get an error 404 when I try with only one (/something).

RewriteRule ([^/]+)/([^/]+) /posts/?category2=$1&category2=$2 [L,QSA]

如何传递只有类别1类别2时不可用?

How can I pass only category1 when category2 isn't available?

推荐答案

几个解决方案:

多个规则(比较容易理解,但有点慢):

Multiple rules (easier to understand but a bit slower):

RewriteRule ^([^/]+) /posts/?category2=$1 [L,QSA]
RewriteRule ^([^/]+)/([^/]+) /posts/?category2=$1&category2=$2 [L,QSA]

单一的规则:

Single rule:

RewriteRule ^([^/]+)(/([^/]+))? /posts/?category2=$1&category2=$3 [L,QSA]

下面的URL(/ something2)的第二部分是可选的。请注意 - $ 2改成$ 3

Here the second part of URL (/something2) is optional. Please note -- $2 was changed to $3.