.htaccess 如何在htaccess中将规则3行重写为1行

.htaccess 如何在htaccess中将规则3行重写为1行,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我有一个问题的例子: 我用3行代码重写 RewriteRule ^category.html$ index.php?page=category&type=all&page_value=1 RewriteRule ^category/([a-zA-Z0-9\-\_]+).html$ index.php?page=category&type=$1&page_value=1 RewriteRule ^category/([a-zA-Z0-9\-\_]+)/([0-9]+

我有一个问题的例子: 我用3行代码重写

RewriteRule ^category.html$ index.php?page=category&type=all&page_value=1
RewriteRule ^category/([a-zA-Z0-9\-\_]+).html$ index.php?page=category&type=$1&page_value=1
RewriteRule ^category/([a-zA-Z0-9\-\_]+)/([0-9]+).html$ index.php?page=category&type=$1&page_value=$2

我可以在一行中重写规则吗?

有点-您可以这样做:

RewriteRule ^category(?:(?:/([a-zA-Z0-9\-\_]+))?(?:/([0-9]+))?)?.html index.php?page=category&type=$1&page_value=$2
演示:

但是-看看对于基本类别,它是如何不将值传递给查询字符串的

http://example.com/category.html

改写为

http://example.com/index.php?page=category&type=&page_value=


因此,您需要确保您的解析脚本可以使用
type
page\u value

的默认参数处理此问题,这将变得不必要的复杂…非常感谢您@APTX-没问题。如果这个答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。