如何从 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 看起来已经是了:请参阅提问者代码中的<Directory /var/www/>
。
@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
【讨论】:
最好的解决方案,效果很好。非常感谢 终于!一个可行的解决方案。 setp5
也可以简单:service apache2 restart
是的,这个解决方案适用于 codeigniter 3.x + ubuntu 16.04
我强烈推荐这个解决方案用于 Codeigniter 3、LAMP 和 Ubuntu 14
我错过了 AllowOveride All - 现在可以使用。谢谢!以上是关于如何从 UBUNTU 的 codeigniter 中删除 index.php [重复]的主要内容,如果未能解决你的问题,请参考以下文章