在.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§ion=$1&category=$2&orderby=$3&filter=$4 [L,QSA]
当POST查询“orderby”为空时如何为一个案例制定规则,我希望默认为它分配一些值,例如“rating”?
如果根本没有“orderby”,我想添加默认的“orderby”参数!
非常感谢!
答案 0 :(得分:0)
您需要让PHP处理缺失值,即分配默认值。重写.htaccess中使用的规则在固定正则表达式上工作,并且不允许像编程语言那样处理逻辑。
要使模式正确匹配,“漂亮”URL中的第三个捕获组需要在原始查询字符串中具有orderby
值。 [^/]+
明确要求至少需要一个字符(不是斜杠)。
您可以在结尾附近省略非捕获组(?:/([^/]+))?
。
这将有效,使第4组(过滤器)可选:
^category/([^/]+)/([^/]+)/([^/]+)/([^/]+)?/?