【问题标题】:Apache Error Request exceeded the limit of 10 internal redirectsApache 错误请求超出了 10 个内部重定向的限制
【发布时间】:2021-10-06 01:58:49
【问题描述】:

我有一个运行我的 php 应用程序的 linux vps,我注意到它的性能最近显着下降。我检查了错误日志,发现我收到了这些错误:

AH00124:请求超出了 10 个内部重定向的限制,原因是 可能的配置错误。使用“LimitInternalRecursion”增加 必要时限制。使用“LogLevel debug”获取回溯。, 推荐人:https://website.com/app/?id=12345

这是我在 public_html 根目录下的 htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ CCA\ DCV)?$
RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ CCA\ DCV)?$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Options -Indexes
RewriteCond %{HTTP_REFERER} !^https://(www\.)?website.com [NC] 
RewriteCond %{HTTP_REFERER} !^https://(www\.)?website.com.*$ [NC] 
RewriteRule \.(pdf)$ - [F]

这是我在应用程序本身中的 htaccess

Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

我不确定我需要做什么才能消除此错误。

【问题讨论】:

  • “应用程序本身中的我的 htaccess” - 我假设您的意思是在 /app 子目录中?
  • 嗨 @MrWhite 是的,它在应用程序子目录中。

标签: php apache .htaccess


【解决方案1】:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

在重写之前,您没有检查目标文件(.php)是否存在。因此,任何对应的.php 文件也不存在的请求(尚未映射到文件)都将导致重写循环。

请尝试以下方法:

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^.]+)$ $1.php [L]

您不需要在正则表达式字符类中使用反斜杠转义文字点。此处不需要NC 标志。


旁白:/app/.htaccess 中的 mod_rewrite 指令将导致父 mod_rewrite 指令被完全覆盖 - 因此不会发生 HTTP 到 HTTPS 的重定向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2019-03-08
    • 2018-03-18
    • 2020-08-12
    • 2018-08-21
    • 2014-05-10
    • 1970-01-01
    相关资源
    最近更新 更多