【问题标题】:CodeIgniter deployment weird issue with urlsurl 的 CodeIgniter 部署奇怪问题
【发布时间】:2016-10-31 14:23:50
【问题描述】:

我刚刚完成了我的 CI 项目,并通过 FTP 将其上传到了外部服务器。问题是 urls 的东西在 localhost 上完美运行,但在外部服务器上却不行,尽管如果我将 index.php 放在 URI 上,urls 仍然有效。

示例:www.page.com/index.php/shop(有效)、www.page.com/shop(无效)

我进行了研究,我发现的所有答案似乎都不适合我的情况。我正在使用 Apache2 的 Linux 上工作。我进行了以下更改:

1-/var/www/dev.example.com (Apache2):

<VirtualHost *:80>
<Directory /var/www/dev.example.com>
Options FollowSymLinks
AllowOverride All
</Directory>

2-Config.php(CI):

$config['base_url'] = 'http://' . $_SERVER['HTTP_HOST'] . '/dev.example.com';

3-htaccess(CI):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

4-index.php(CI):

define('ENVIRONMENT', 'production')

我错过了什么?请原谅我的英语不好。

编辑:

我认为问题在于 .htaccess 文件由于某种原因没有被调用,因此对于我对文件进行的许多更改,结果将是相同的。如何查看文件是否被使用?

【问题讨论】:

  • 如果主页正常,但其他页面都没有,您的上述设置是正确的,但您的路线丢失/错误/不正确。查看config 文件夹中的routes.php 文件。
  • 我只有一个路由调用我的主控制器:$route['default_controller'] = 'inicio';

标签: php codeigniter url


【解决方案1】:
$root = "http://".$_SERVER['HTTP_HOST'];
$root .=  str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

$config['base_url'] = $root;

尝试将您的基本网址更改为 this。希望它有效

我希望你的 htacess 看起来像这样

<IfModule mod_rewrite.c>
RewriteEngine on   
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

你的配置文件中的 uri_protocol 看起来像这样 $config['uri_protocol'] = 'REQUEST_URI';

【讨论】:

  • 我认为它甚至没有获得我的 htaccess,因为我在文件中放入了一些垃圾,但我仍然收到 404 错误......它可能会给我另一个错误,不是吗?
【解决方案2】:

好吧,我在服务器的 CI 应用程序上运行了这个 .htaccess。为什么不试试呢?

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

【讨论】:

  • 不起作用,伙计...我想这是我服务器的一种万圣节把戏。
【解决方案3】:

在您创建/更改虚拟主机文件 (1-/var/www/dev.example.com) 后,您是否重新启动了 apache2 以使这些更改生效?

这样做的一种方法(如果你没有这样做)是在你的服务器终端上运行它:

$ sudo systemctl restart apache2

$ sudo service apache2 restart

【讨论】:

  • 是的,这是我做的第一件事。
【解决方案4】:

我终于找到了解决办法。 /etc/apache2/sites-enabled 下名为 000-default 的文件导致了问题。我有类似的东西:

<Directory /var/www/ > 
Options Indexes FollowSymLinks MultiViews
AllowOverride None
...
</Directory>

所以我把它改成了:

<Directory /var/www/ > 
Options Indexes FollowSymLinks MultiViews
AllowOverride All
...
</Directory>

在 sudo apache2 restart 后解决了我的问题。所以基本上这个文件覆盖了我的 VHost 文件。

希望它对某人有所帮助!

【讨论】:

    猜你喜欢
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2011-04-11
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多