如何从 UBUNTU 的 codeigniter 中删除 index.php [重复]

Posted

技术标签:

【中文标题】如何从 UBUNTU 的 codeigniter 中删除 index.php [重复]【英文标题】:How to remove index.php from codeigniter in UBUNTU [duplicate] 【发布时间】:2013-05-09 13:04:34 【问题描述】:

我知道这个问题已经被问过了,我尝试了所有这些但仍然无法从 url 中删除 index.php。 这是我的详细信息

Ubuntu 12.10
PHP : 5.4.6
Mod_rewrite in on
CI verson: 2.1

.htacess 看起来像:

RewriteEngine On
RewriteBase /projectname

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

我也看下面的链接,但没有运气.. Cannot remove index.php from url CI based site

How to remove "index.php" in codeigniter's path

我的“/etc/apache2/sites-available/default”是这样的:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None 
        </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog $APACHE_LOG_DIR/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog $APACHE_LOG_DIR/access.log combined
</VirtualHost>

任何帮助表示赞赏!

【问题讨论】:

您的日志中有什么可疑之处吗? 您的$config['uri_protocol'] 设置为什么? 最后,你得到了什么错误。我怀疑“找不到对象”? @MikeAnthony 我收到“在此服务器上找不到请求的 URL /projectname/aboutus。” 还有其他问题吗?另外,当您访问projectname 根目录时会发生什么?而且,当您访问主机的根目录 (localhost) 时会发生什么? 【参考方案1】:

application/config/config.php更改:

$config['index_page'] = 'index.php';

到:

$config['index_page'] = '';

每次更改 apache 配置文件时都重新加载 apache 是个好主意。

sudo /etc/init.d/apache2 reload

或:

sudo service apache2 reload

或:

sudo /etc/init.d/httpd reload

(或任何与您的平台等效的命令)

对于它的价值,这是我的 .htaccess

RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|static|robots\.txt|favicon\.ico|uploads|googlexxxxxxxx\.html|mobile.html)
RewriteRule ^(.*)$ index.php/$1 [L]

【讨论】:

是的,我也更新了那个。 是的,我重启了我的 apache 次数。没用。 尝试使用您的 htaccess 文件没有成功。我更改“RewriteBase /projectname”,因为我的 ci 在此文件夹下。 它就像一个魅力。非常感谢! 重新加载 APACHE!!!【参考方案2】:

我的 .htaccess

RewriteEngine on

RewriteCond $1 !^(index.php)

RewriteRule ^(.*)$ index.php/$1 [L]

【讨论】:

我试过这个没有成功 更改 httpd.conf, AllowOverride None -> AllowOverride All 看起来已经是了:请参阅提问者代码中的&lt;Directory /var/www/&gt; @blu:我将“AllowOverride None”更改为“AllowOverride All”并重新启动了我的 apache,但没有成功。 新建一个目录,测试你的web服务器是否支持重写。【参考方案3】:

第 1 步:

在 htaccess 文件中添加这个

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

  RewriteCond %REQUEST_FILENAME !-f
  RewriteRule ^ index.php [QSA,L]
</IfModule>

第 2 步:

删除 codeigniter 配置中的 index.php

$config['base_url'] = ''; 
$config['index_page'] = '';

第 3 步:

允许在 Apache 配置(命令)中覆盖 htaccess

sudo nano /etc/apache2/apache2.conf

并编辑文件并更改为

AllowOverride All

对于 www 文件夹

第 4 步:

启用 apache mod rewrite(命令)

sudo a2enmod rewrite

第 5 步:

重启 Apache(命令)

sudo /etc/init.d/apache2 restart

【讨论】:

最好的解决方案,效果很好。非常感谢 终于!一个可行的解决方案。 setp 5 也可以简单:service apache2 restart 是的,这个解决方案适用于 codeigniter 3.x + ubuntu 16.04 我强烈推荐这个解决方案用于 Codeigniter 3、LAMP 和 Ubuntu 14 我错过了 AllowOveride All - 现在可以使用。谢谢!

以上是关于如何从 UBUNTU 的 codeigniter 中删除 index.php [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 上的 Codeigniter 没有欢迎消息

ubuntu中带有codeigniter3的phpunit

如何通过 CodeIgniter 连接 MongoDB

我在 Ubuntu 14.04 中使用 codeigniter 得到 URL not found 问题错误

如何从 CodeIgniter 中的视图访问模型

我如何从 Codeigniter 中的助手调用助手?