从CodeIgniter 3的URL中删除index.php。

问题描述 投票:1回答:1

我试图从我的CodeIgniter 3 URL中删除index.php。目前,我所有的URLs都是这样的。

http://example.com/index.php/Controller/function

而我希望他们看起来像这样

http://example.com/Controller/function

我关注了下面的文章和Stack Overflow的帖子,但没有一个答案对我有用。

我的目录结构设置如下。

  • varwwwexample
    • 申请
      • (标准的CodeIgniter应用程序文件......控制器、模型、视图、配置)
    • 公共
      • css
      • js
      • 字体
      • 图像
      • 索引.php
      • .htaccess
    • 制度
      • 我没碰过这个目录里的任何东西。
    • .htaccess

varwwwexample.htaccess的内容。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule  ^$ public/    [L]
    RewriteRule  (.*) public/$1 [L]
</IfModule>

varwwwexamplepublic.htaccess的内容。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>

varwwwexampleapplicationconfigconfig.php的内容(根据之前的阅读,我对其进行了删减)。

$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI'; /* have tried AUTO as well */

对于我的Apache服务器来说,mod-rewrite已经通过以下方式启用。

sudo a2enmod rewrite
sudo service apache2 restart

我的虚拟主机文件是:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example/public

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
apache .htaccess codeigniter
1个回答
2
投票

将这些添加到你的虚拟主机文件中,并根据需要调整选项指令。

    <Directory />
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

    <Directory "/var/www/example/public">
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>
© www.soinside.com 2019 - 2024. All rights reserved.