CodeIgniter 中的 base_url() 和 403 错误
Posted
技术标签:
【中文标题】CodeIgniter 中的 base_url() 和 403 错误【英文标题】:base_url() and 403 error in CodeIgniter 【发布时间】:2015-05-07 01:13:41 【问题描述】:在 html 视图中,css 链接代码如下所示:
<link href='www.jedendzien.pl/assets/css/style.css' rel='stylesheet'>
但是我的浏览器显示的是双域名地址
www.jedendzien.pl/www.jedendzien.pl/assets/css/style.css
所以我收到 403 错误。我通过
创建链接<link href='<?php echo base_url(); ?>assets/css/style.css' rel='stylesheet'>
在 config.php 中我正在设置:
$config['base_url'] = 'www.jedendzien.pl/';
在我的 XAMPP 服务器中,一切正常,但问题仅出现在托管服务器上。
如果我更改 $config['base_url'] = ''
然后地址看起来和工作正常,但我仍然遇到 403 错误的问题。
我在根目录下的 .htaccess:
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]
【问题讨论】:
试试$config['base_url'] = 'http://www.jedendzien.pl/';
谢谢,解决了双域问题,但 403 错误仍然存在。看这个例子:www.jedendzien.pl -> 纯html,没有css和js -> 链接www.jedendzien.pl/uzytkownik/rejestracja -> 403错误 -> 刷新 -> 403错误 -> 清除cookies -> 刷新 - > 注册表单 -> 提交 -> 403 错误...
加载资源失败:服务器响应状态为 403(禁止)。这表明某些服务器配置错误。检查或删除这些资源的 .htacces 文件。
我只有一个 .htaccess 文件,它在根目录下。
【参考方案1】:
将 assets/css/style.css 的权限改为 644
如下更改基本网址
$config['base_url'] = 'http://www.jedendzien.pl/';
或者如果你有一个安全的网址,那么
$config['base_url'] = 'https://www.jedendzien.pl/';
将 .htaccess 更改为
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]
【讨论】:
谢谢,我希望这会有所帮助。它正在工作,但我已经在 CI 中使用新的空项目对其进行了测试(不再有工作时间)。稍后我将使用 jpg 文件添加更多控制器、模型和视图,然后我们会看到 :-) 过去几年我们都在做同样的事情 会话有问题。当我在自动加载文件中添加会话时,问题再次出现。没有会话没关系,但它是必需的,所以我需要在我的项目中使用会话。 我不认为,会话会导致这个问题。因为你只设置了 css 路径。css 只加载 browsers.not 在服务器中。jedendzien.pl/assets/css/style.css我可以从 brawser 访问这个文件 但问题仅在我使用会话时。如果没有加载会话库,所有 css 和 js 都可以正常加载。现在检查我的网站。我已经从自动加载配置文件中删除了会话库。它正在工作,但我无法登录。【参考方案2】:对于绝对网址,您应该包含协议,它可能是相对的,如下所示:
<link href='//www.jedendzien.pl/assets/css/style.css' rel='stylesheet'>
【讨论】:
好的,但我不明白为什么 base_url() 可以在 hocalhost 上工作,为什么我仍然收到 403 错误?示例:www.jedendzien.pl -> 纯 html,没有 css 和 js -> 链接 www.jedendzien.pl/uzytkownik/rejestracja -> 403 错误 -> 刷新 -> 403 错误 -> 清除 cookie -> 刷新 -> 注册表单-> 提交 -> 403 错误... @Bejkrools 也许您只是没有文件所需的权限。chmod
应该解决这个问题。搜索以获取更多信息。
使用 FileZilla 我将应用程序、系统和资产文件夹中的每个文件的 chmod 更改为“777”。还是 403 错误。
但是当我在 root 中创建了另一个 index.php(不在 CI 中)并且我从 application/controllers/ 中包含了 file.php 时,就可以了。没有 403 错误...我不明白为什么?【参考方案3】:
试试这个 .htacces 内容:
RewriteEngine on
RewriteCond $1 !^(index\.php|assets)
RewriteRule ^(.*)$ /index.php/$1 [L]
【讨论】:
【参考方案4】:只需清空 base_url();在 config.php 文件中。 并从 www.codeigniter.com 的 codeigniter 3 的 .htaccess 文件中复制 .htaccess 的文本。
【讨论】:
以上是关于CodeIgniter 中的 base_url() 和 403 错误的主要内容,如果未能解决你的问题,请参考以下文章
CodeIgniter base_url(), localhost 中的链接给了我实时服务器
AngularJS Codeigniter base_url 路径设置
php Configuracion para base_url en codeigniter