我的客户网络主机坚持将站点的重写规则放入虚拟主机文件中,但这会导致错误“错误请求”。尽管当我在本地服务器和其他类似站点上的 .htaccess 中放置相同的规则时,它运行得很好。规则如下:
RewriteRule ^api/ index_rest.php [L]
RewriteRule ^index_rest.php - [L]
RewriteRule ^([^/]+/)?content/treemenu.* index_treemenu.php [L]
RewriteRule ^var/([^/]+/)?storage/images(-versioned)?/.* - [L]
RewriteRule ^var/([^/]+/)?cache/(texttoimage|public)/.* - [L]
RewriteRule ^design/[^/]+/(stylesheets|images|javascript)/.* - [L]
RewriteRule ^share/icons/.* - [L]
RewriteRule ^extension/[^/]+/design/[^/]+/(stylesheets|flash|images|lib|javascripts?)/.* - [L]
RewriteRule ^packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
RewriteRule ^packages/styles/.+/thumbnail/.* - [L]
RewriteRule ^var/storage/packages/.* - [L]
RewriteRule ^favicon.ico - [L]
RewriteRule ^design/standard/images/favicon.ico - [L]
RewriteRule ^robots.txt - [L]
RewriteRule ^w3c/p3p.xml - [L]
RewriteRule .* index.php
我的主机给了我一个错误日志,它是 located here ,但我无法确定问题所在。非常感谢任何帮助。
最佳答案
在 VirtualHost 上下文中使用时需要使用前导斜杠。
In VirtualHost context, The Pattern will initially be matched against the part of the URL after the hostname and port, and before the query string (e.g. "/app1/index.html").
所以 ^...
必须是 ^/...
关于apache - 重写规则放置在虚拟主机文件中时会导致 "Bad request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292809/