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 中的链接给了我实时服务器

PHP CodeIgniter动态base_url

AngularJS Codeigniter base_url 路径设置

php Configuracion para base_url en codeigniter

CodeIgniter 3 base_url 函数返回错误的 url

使用 jQuery Mobile 的 Codeigniter 有时会返回错误的 base_url()