CodeIgniter部署与网址奇怪的问题

时间:2016-10-31 14:23:51

标签: php codeigniter url

我刚刚完成了我的CI项目,并通过FTP将其上传到外部服务器。问题是urls的东西在localhost上完美运行,但在外部服务器上却没有,如果我把index.php放在URI上,那么url就可以了。

示例:www.page.com/index.php/shop(works),www.page.com / shop(不起作用)

我做了我的研究,我发现的所有答案似乎都不适合我的情况。我正在使用Apache2的Linux上工作。我做了这些改变:

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

No message listener of type javax.jms.MessageListener found in resource adapter activemq

2 - CONFIG.PHP(CI):

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

3-htaccess的(CI):

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

4的index.php(CI):

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

我错过了什么?对不起,我的英文不好。

编辑:

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

4 个答案:

答案 0 :(得分:0)

$root = "http://".$_SERVER['HTTP_HOST'];
$root .=  str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

$config['base_url'] = $root;

尝试将您的基本网址更改为this.hope它可以正常工作

我希望你的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';

答案 1 :(得分:0)

我在服务器上的CI应用程序上运行了.htaccess。为什么不尝试一下呢?

export RETR_DB_NAME

答案 2 :(得分:0)

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

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

$ sudo systemctl restart apache2

$ sudo service apache2 restart

答案 3 :(得分:0)

最后我找到了解决方案。在/ 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重新启动后修复我的问题。所以基本上这个文件覆盖了我的VHost文件。

希望它有所帮助!