apache - 重写规则放置在虚拟主机文件中时会导致 "Bad request"

标签 apache .htaccess mod-rewrite url-rewriting bad-request

我的客户网络主机坚持将站点的重写规则放入虚拟主机文件中,但这会导致错误“错误请求”。尽管当我在本地服务器和其他类似站点上的 .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/

相关文章:

regex - 了解 RewriteCond 中的 THE_REQUEST 变量

regex - 动态域 htaccess 重定向

php - 如何保护 codeigniter 中的 Assets 文件夹

apache - 使用 RewriteCond 重定向 IP 范围

apache - SEO 友好 URL 的正确 mod_rewrite

regex - 重写将简单的正则表达式重定向到基本文件

javascript - 如何重定向到文件

使用 LDAP 授权的 Apache 客户端证书身份验证

json - Avro 不处理循环引用

css - 我主机上的奇怪 .htaccess