CodeIgniter:从URL中删除index.php

时间:2015-10-28 16:33:33

标签: php apache .htaccess codeigniter mod-rewrite

我试图从我的WAMP服务器THIS上的网址中删除index.php,但由于某些原因我的实际托管服务器上没有。

我刚刚在我当前的Linux Ubuntu Server上创建了一个子域, 在/var/www/tools.example.com/public_html

我检查了mod_rewrite是否已使用我上传到目录的.php文件启用了这个:

<?php 
phpinfo();

和mod_rewrite位于“已加载模块”下。 所以不用担心

我在etc / apache2 / sites-available / tools.example.com.conf中创建的.conf文件如下所示:

<VirtualHost *:80>
    ServerName tools.example.com
    ServerAdmin walid@example.com

    ErrorLog /var/www/tools.example.com/logs/error.log
    CustomLog /var/www/tools.example.com/logs/access.log combined
    DocumentRoot /var/www/tools.example.com/public_html

    <Directory /var/www/tools.example.com.conf/public_html/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

</VirtualHost>

其中AllowOverride All因此启用了使用带有.htaccess的mod_rewrite。

我不知道为什么这仍然不起作用。知道为什么吗?

主目录中的.htaccess文件的内容:

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

编辑#1:

我已经完成了这篇文章中的所有前9个解决方案:CodeIgniter removing index.php from url

1 个答案:

答案 0 :(得分:1)

您的路径在.conf文件中对于directory指令不正确。列出的文档根目录应与Directory指令相同。所以我不认为它正在拿起AllowOverride All指令。

更改此

<Directory /var/www/tools.example.com.conf/public_html/>

到此

<Directory /var/www/tools.example.com/public_html/>