.htaccess 一致“请求超过了 10 个内部重定向的限制...”(包含代码)

Posted

技术标签:

【中文标题】.htaccess 一致“请求超过了 10 个内部重定向的限制...”(包含代码)【英文标题】:.htaccess Consistent "Request Exceeded The Limit Of 10 Internal Redirects..." (Code Included) 【发布时间】:2015-11-18 12:32:17 【问题描述】:

我遇到了一些非常奇怪的问题。

我在 AWS Elastic Beanstalk 上运行我的应用程序,我的 .htaccess 文件位于我的应用程序的可访问 Web 级别的根目录中。

我经常在我的错误日志中看到问题,似乎每次请求我都会收到“请求超过 10 个内部重定向的限制”消息。虽然页面正在加载并且工作正常,但这些错误正在抛出并且我在服务器上的负载远高于应有的负载,这向我表明某处存在问题。

我对 .htaccess 文件不是很熟悉,因为我已经有 2 年左右没有编写它们了,而这个是针对我构建的旧 MVC 框架的(尽管到目前为止从未遇到过问题)

任何帮助将不胜感激,我不知道在哪里看这一点。

.htaccess 文件:

# -*- mode: apache -*-

AddDefaultCharset utf-8

<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript image/jpg image/jpeg image/png image/gif video/mp4
</ifmodule>

Options +FollowSymlinks
RewriteEngine on

RewriteCond %HTTP_HOST ^[^\.]+\.[^\.]+$
RewriteRule ^.*$ http://www.%HTTP_HOST%REQUEST_URI [R=301,L]

RewriteCond %REQUEST_FILENAME -f
RewriteRule .* - [L]

RewriteRule ^(\d+\/)?assets/(.*)$ assets/$2 [L]
RewriteRule .*$ app/index.php [L]

【问题讨论】:

启用重写日志。当(\d+\/)? 是可选的时,您还将assets/* 重定向到assets/* 啊,对。会这样做并检查它,如果我无法弄清楚,我会发布转储。 仍然遇到问题,启用日志似乎抛出 500 错误.. 【参考方案1】:

你的规则是这样的:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %HTTP_HOST ^[^.]+\.[^.]+$
RewriteRule ^.*$ http://www.%HTTP_HOST%REQUEST_URI [R=301,L]

RewriteRule ^\d+/(assets/.*)$ $1 [L,NC]

# skip all files and directories from rewrite rules below
RewriteCond %REQUEST_FILENAME -f [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^ - [L]

RewriteRule ^ app/index.php [L]

在跳过文件/目录规则之前保留assets 规则,并且不要将\d+/ 部分设为可选。

【讨论】:

以上是关于.htaccess 一致“请求超过了 10 个内部重定向的限制...”(包含代码)的主要内容,如果未能解决你的问题,请参考以下文章

在开发与实时服务器之间切换时不一致?

在开发与实时服务器之间切换时不一致?

浅谈.htaccess文件--避免滥用.htaccess文件

apache开启.htaccess及.htaccess的使用方法

.htaccess 这个网页有一个重定向循环 htaccess

apache开启.htaccess及.htaccess的使用方法