0

在文件 .htaccess 中,我使用以下规则:

# enable URI rewrite
RewriteEngine On

# if request is for an actual file or directory on disk,
# then do not continue with rewrite engine
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^category/([^/]+)/([^/]+)/([^/]+)(?:/([^/]+))?/? index.php?to=prepared&section=$1&category=$2&orderby=$3&filter=$4 [L,QSA]

当POST查询“orderby”为空并且我希望默认为其分配一些值(例如“rating”)时,如何为案例制定规则?

如果根本没有“orderby”,我想添加一个默认的“orderby”参数!

非常感谢!

4

1 回答 1

0

您需要让 PHP 处理缺失值,即指定一个默认值。.htaccess 中使用的重写规则适用于固定的正则表达式,并且不允许像编程语言那样处理逻辑。

为了使模式正确匹配,“漂亮”URL 中的第三个捕获组需要orderby在原始查询字符串中有一个值。[^/]+显式需要至少一个字符(不是斜线)。

(?:/([^/]+))?您可以省略接近末尾的非捕获组。

这将起作用,使第四组(过滤器)成为可选:

^category/([^/]+)/([^/]+)/([^/]+)/([^/]+)?/?
于 2013-06-03T09:44:30.940 回答