【问题标题】:Codeigniter V4 not loading public resourcesCodeigniter V4 不加载公共资源
【发布时间】:2021-09-17 17:21:02
【问题描述】:

我正在使用 CodeIgniter 4.1.3。

下面是我的.htaccess

#Options All -Indexes

<IfModule mod_rewrite.c>
#Options +FollowSymlinks
RewriteEngine On
# RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]

RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>


ServerSignature Off

服务器不支持选项 all 和 followSymlinks。 在本地服务器上工作正常

首页已加载,但未从公共目录加载 css、javascript 和图像,导致 404 错误。

不确定需要改变什么。

【问题讨论】:

    标签: .htaccess codeigniter codeigniter-4


    【解决方案1】:

    使用您显示的示例,请尝试遵循 htaccess 规则文件。确保将其放在您的根目录中。还要确保在测试 URL 之前清除浏览器缓存。

    Options -Multiviews
    <IfModule mod_rewrite.c>
    #Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /public/
    
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
       
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/?$ index.php/$1 [L,NC,QSA]
    
    </IfModule>
    
    <IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
    </IfModule>
    
    ServerSignature Off
    

    JS/CS 重写/重定向: 您可能需要使用 base 标签来修复您的 js 和其他相关资源。如果您使用相对路径链接 js 文件,那么该文件显然会得到 404,因为它正在寻找 URL 路径。例如,如果 URL 路径是 /file/ 而不是 file.html,那么您的相关资源将从 /file/ 加载,这不是目录而是重写的 html 文件。要解决此问题,请使您的链接成为绝对链接或使用基本标签。在您的网页标题中添加此&lt;base href="/"&gt;,以便您的相关链接可以从正确的位置加载。

    【讨论】:

    • 使用上述 htaccess 我收到 net::ERR_TOO_MANY_REDIRECTS 错误。
    • @PragneshChauhan,确定 Pragnesh,我已经修复了它,请现在看看,如果这对你有帮助,请告诉我。
    • 感谢您的快速回复,但我仍然收到同样的错误ERR_TOO_MANY_REDIRECTS
    • @PragneshChauhan,哦,好吧,我相信RewriteCond %{REQUEST_FILENAME} !-d 可能是这里的罪魁祸首,我现在在规则中添加了 1 个条件,请检查一次,干杯。
    • 更改服务器后,它正在使用我发布的旧 .htaccess
    【解决方案2】:
    Options All -Indexes 
    Options +FollowSymlinks
    

    在 apache 上运行良好,但如果你的服务器是 centos,那么使用它

    Options -Indexes 
    Options +SymLinksIfOwnerMatch
    

    【讨论】:

      猜你喜欢
      • 2015-03-02
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2015-11-24
      • 2014-06-07
      • 2021-11-12
      相关资源
      最近更新 更多