gpt4 book ai didi

.htaccess - 为什么heroku 将 "folder-like"请求通过301 重定向到http?

转载 作者:行者123 更新时间:2023-12-04 08:06:46 26 4
gpt4 key购买 nike

我有一个在 heroku 上运行的水疗中心,我想让它在强制 https 上运行。我正在使用 PHP 堆栈对其进行一些基本身份验证,没什么特别的,只有一个 index.php。认为这应该很容易,但我在那里有一个奇怪的重定向:
例如,当我访问/appStart 时,我在日志中得到了这个:

10.8.149.25 - - [13/Feb/2021:19:23:57 +0000] "GET /appStart HTTP/1.1" 301 248 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36
这是我的.htaccess:

RewriteEngine On

#Force SSL
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_URI} !\.(png|css|js|json|txt|ico)$
RewriteCond %{REQUEST_URI} !_nuxt
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
我在我的 .htaccess 中将 https 重写切换为 302 以确保重定向不是来自我的规则,所以......
这个301是哪里来的???

最佳答案

appStart是一个物理目录,您请求 /appStart (没有尾部斜杠)然后 mod_dir (Apache) 将使用 301 重定向“修复” URL 以附加尾部斜杠。 IE。 /appStart/ .
您应该请求 /appStart/ (带有斜杠)如果 appStart是一个物理目录。

UPDATE: Just to be sure: DirectorySlash Off will solve my issue, right?


(我假设您的 .htaccess 文件位于 /appStart/.htaccess ?)
它实际上比这要复杂一些。如果目录上没有尾部斜杠,那么您在 .htaccess 中的 mod_rewrite 指令不会被处理并且前端 Controller (内部重写为 index.php )将失败。其他问题,如 DirectoryIndex (mod_dir) 也会失败——尽管你在这里似乎并不依赖它(你使用的是 mod_rewrite)。
最终结果是您可能会收到 403 Forbidden 响应(除非您启用了 mod_autoindex - 在这种情况下,您将获得自动生成的目录列表,尽管存在 DirectoryIndex 文档!请参阅 security warning for the DirectorySlash directive在 Apache 文档中。)
简而言之,Apache 需要尾部斜杠。
如果您使用 DirectorySlash Off 禁用尾部斜杠的自动附加那么您需要自己手动附加此尾部斜杠以避免这些问题。并且您需要在 parent/root .htaccess 中执行此操作文件而不是 /appStart/.htaccess .
例如...移动您现有的 /appStart/.htaccess文件到根 /.htaccess文件,包括 DirectorySlash Off指令并更改最后一个 RewriteRule指令阅读:
RewriteRule ^appStart appStart/index.php [L]
但是,这并不一定能完全解决问题(取决于您的应用程序的结构),因为您的应用程序中的任何相对 URL 路径(静态资源等)现在都相对于文档根目录,而不是 /appStart/子目录,就像以前一样。这是一个客户端 URL 问题,只能通过“修复”客户端 URL 来解决。

关于.htaccess - 为什么heroku 将 "folder-like"请求通过301 重定向到http?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66189092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com