我有一个大约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]
答案 0 :(得分:0)
如果您担心速度,请将所有配置移入vhost配置文件并禁用.htaccess文件。当前,每次收到请求时,Apache都会读取您的.htaccess文件。虚拟主机配置在启动时会被读取一次,并且规则会保留在内存中,从而加快了规则的处理速度。
关于眼前的问题,您可以使用另一个捕获组来组合这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]