我正在使用以下 .htaccess 规则在我的网站上重写多个 url:
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/ 格式,因为搜索引擎已经索引了数百个 url。=/
感谢您的意见。