[英].htaccess RewriteRule performance (large amount of RegEx)
我正在使用以下.htaccess规则重写我网站上的多个网址:
RewriteEngine On
RewriteRule ^privacy(\w|\s|\+|-|&|;|#)+policy/?$ index.php?page=privacy [NC]
RewriteRule ^([A-Za-z]+)(.*)+foo(\w|\s|\+|-|&|;|#)+bar/?$ index.php?page=$1 [NC]
第一条规则对于“隐私策略”页面有效。
但是,第二条规则导致服务器响应时间明显变差。 我相信此规则的编写方式会导致查询数据库中[[A-Za-z] +]表达式的延迟。 有大量的RegEx适用于此规则,并且某些URL在RegEx之后包含“多余”的单词。 例如:
www.example.com/North+America+Foo+Bar/
在数据库中查询“ North”以将URL重写为
www.example.com/index.php?page=North
这就是为什么我在规则中包含(。*)的原因,但是我担心这是响应时间慢的原因。 我知道很复杂。
有什么想法或建议来改进此规则以提高性能? 我希望保留www.example.com/Expression+Foo+Bar/格式,因为搜索引擎已经为数百个网址建立了索引。 = /
感谢您的意见。
您无需在第二条规则中匹配整个URI。 使用简化的正则表达式尝试以下规则:
RewriteRule ^([a-z]+)(?=.*?foo.*?bar) index.php?page=$1 [NC]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.