我试图从我的CodeIgniter 3 URL中删除index.php。目前,我所有的URLs都是这样的。
http://example.com/index.php/Controller/function
而我希望他们看起来像这样
http://example.com/Controller/function
我关注了下面的文章和Stack Overflow的帖子,但没有一个答案对我有用。
我的目录结构设置如下。
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>
将这些添加到你的虚拟主机文件中,并根据需要调整选项指令。
<Directory />
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Directory "/var/www/example/public">
AllowOverride All
Order allow,deny
allow from all
</Directory>