gpt4 book ai didi

.htaccess - 新的 c9 版本后,简单的 mod_rewrite 规则被打破

转载 作者:行者123 更新时间:2023-12-02 01:46:47 25 4
gpt4 key购买 nike

我正在处理托管在 Cloud9 IDE 上的项目.我设置了一组简单的 mod_rewrite 规则,但在 c9 的新版本推出后它们不再起作用。我花了很长时间才弄清楚这些规则(我充其量只是个新手)我很困惑为什么这些规则不再有效(据我所知,新的 c9 版本不应该影响 mod_rewrite 规则)。

这是规则(位于根 .htaccess 中)

RewriteEngine on
Options FollowSymLinks

RewriteBase /

RewriteCond %{REQUEST_URI} ^/css/.*$ [OR]
RewriteCond %{REQUEST_URI} ^/img/.*$ [OR]
RewriteCond %{REQUEST_URI} ^/js/.*$
RewriteCond Astralis/resources%{REQUEST_URI} -f
RewriteRule ^(.+)$ Astralis/resources/$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

目标非常简单...所有请求都发送到 /css/... /img/.../js/.. . 应该在 Astralis/resources 中提供相关文件(在检查文件是否存在之后)。否则,将其余流量重定向到 index.php。

我遇到的问题是对资源(css、img、js)的所有请求都返回 404。如果我将/css、/img 和/js 文件夹从 Astralis/resources 中移回根目录,所有资源都会正确加载。这个问题是在 c9 的新版本之后开始出现的,没有对 .htaccess 文件、代码库或目录结构进行更改。

关于发生了什么的任何线索?我该如何调试这种东西?编写 mod_rewrite 规则的任何一般提示/技巧也将不胜感激。谢谢。

最佳答案

因为 Apache 需要文件的完整路径才能使用 -f 返回 true你需要使用 %{DOCUMENT_ROOT}/在您的文件路径之前。

这样说:

RewriteEngine on
Options FollowSymLinks

RewriteBase /

RewriteCond %{REQUEST_URI} ^/(css|img|js)/ [NC]
RewriteCond %{DOCUMENT_ROOT}/Astralis/resources%{REQUEST_URI} -f
RewriteRule ^(.+)$ Astralis/resources/$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

关于.htaccess - 新的 c9 版本后,简单的 mod_rewrite 规则被打破,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25187539/

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