【问题标题】:Optimize htaccess rewrite优化 htaccess 重写
【发布时间】:2019-02-17 10:22:00
【问题描述】:

我有一个大约 200 行的 htaccess 文件,并且 htaccess 主要包含重写规则。该文件本身效果很好。

但我想知道是否有更快的方法来重写这个附加规则:

RewriteRule "^order/new/(.+)$" "extention.php?sale&subroute=order&route=new&cid=$1" [QSA,L]
RewriteRule "^order/view/(.+)$" "extention.php?sale&route=view&subroute=order&id=$1" [QSA,L]
RewriteRule "^order/edit/(.+)$" "extention.php?sale&route=edit&subroute=order&id=$1" [QSA,L]
RewriteRule "^order/copy/(.+)$" "extention.php?sale&route=copy&subroute=order&id=$1" [QSA,L]

有没有办法将所有这些行组合成一个?

例如:类似的东西:

RewriteRule "^order/{copy|view|new|edit}/(.+)$" "extention.php?route=$1 &subroute=order&id=$2" [QSA,L]

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    如果您担心速度,请将所有配置移至 vhost 配置文件并禁用 .htaccess 文件。目前,每次收到请求时,Apache 都会读取您的 .htaccess 文件。 vhost 配置在启动时被读取一次,并且规则保存在内存中,从而加快了规则的处理速度。

    至于手头的问题,您可以通过使用另一个捕获组来组合这 4 个规则。捕获组被() 括号包围,而不是大括号。你最终会得到这样的规则:

    RewriteRule ^order/(new|view|edit|copy)/(.+)$ extention.php?sale&route=$1&subroute=order&id=$2 [QSA,L]
    

    或者更通用的:

    RewriteRule ^([^/]+)/([^/]+)/(.+)$ extention.php?sale&route=$2&subroute=$1&id=$3 [QSA,L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 2010-12-24
      • 2021-09-10
      • 2013-10-04
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多