重写规则不适用于根网址 (http://domain.com),但适用于具有路径 (http://domain.com/



我的htaccess中有这段代码:

First condition
------------------------------------------
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cache/html/%{HTTP_HOST}/index.html -f
RewriteRule ^$ /cache/html/%{HTTP_HOST}/index.html [NC,L]
Second condition
------------------------------------------
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cache/html/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*)$ /cache/html/%{HTTP_HOST}/$1/index.html [L]

它应显示当前路由的缓存 html 文件(如果存在)。我最初只有第二个条件,它在我的本地主机(窗口上的 apache)下按预期工作。

当我将其移动到 linux 暂存服务器时出现问题 - 它只是在根 url 上不起作用。

然后我尝试添加第一个条件 (^$),但仍然没有运气。所以我尝试添加(仅用于测试)这个条件:

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cache/html/%{HTTP_HOST}/index.html -f
RewriteRule ^index.html$ /cache/html/%{HTTP_HOST}/index.html [L]

如果我路由到 http://domain.com/index.html 它确实有效并向我展示了缓存的 html。我只是想不通

这是完整的.htaccess文件:http://pastie.org/private/esmto6wdcmwjhzuwfbi4xa(如果重要的话,我正在使用Laravel)

谢谢!

首先你可以添加RewriteLog,或者如果你有Apache 2.4的LogLevel来查看实际的错误和跟踪

日志级别警报重写:跟踪3

在这种情况下,您将确切地看到与什么相比的内容。更多信息请点击此处 http://httpd.apache.org/docs/current/mod/mod_rewrite.html#logging

在您的情况下,我认为您缺少重写库:

重写库/

在任何情况下,请添加一些跟踪数据以确保。

相关内容

最新更新