繁体   English   中英

.htaccess RewriteRule性能(大量的RegEx)

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM