konakona
Apache配置rewrite去掉网址中的 index.php
Apache配置rewrite去掉网址中的 index.php

很显然,默认情况下,index.php在URL地址段中的存在一定程度上影响了URL的简洁和SEO的进行。我们可以通过下面本文介绍的方法来去 掉这个讨厌的index.php。

你或许已经注意到在CodeIgniter用户手册中,已经存在关于此问题的解决方法。但官方提供的这个.htaccess配置, 并不是所有时候都能解决问题。本文现在给出一个更完善的解决方案。

注意:在继续之前,请确认你的主机支持.htaccess配置。其中,如果Apache作为Web服务器,需要 开启mod_rewrite模块的支持;如果将IIS作为Web服务器,则需要额外安装ISAPI_Rewrite拓展。

打开httpd.conf文件修改所有AllowOverrideAll,所有`Allow from none` 改为 `Allow from all`,就像下面这样:

<Directory "D:/usr/local/www">
AllowOverride all
Options +FollowSymLinks +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

然后,在 CI 根目录下新建立一个文件.htaccess

在里面这样写:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]    #不同的框架有细微区别,也可能需要的是index.php/$1

还要修改 config.php 这个文件中的$config['index_page']的值为””:

/*
|————————————————————————–
| Index File
|————————————————————————–
|
| Typically this will be your index.php file, unless you’ve renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = "";

 

题外话

有些PHP框架传参的方式并没有问号,因此可能需要修改.htaccessRewriteRule结果为^(.*)$ /index.php/$1 [L],ThinkPHP便是没有?的。

赞赏
没有标签
首页      程序开发      PHP      Apache配置rewrite去掉网址中的 index.php
https://secure.gravatar.com/avatar/3b712b34a0e1b689cfb524c9c6bcdc47?s=256&r=g

团哥

文章作者

继续玩我的CODE,让别人说去。 低调,就是这么自信。

konakona

Apache配置rewrite去掉网址中的 index.php
很显然,默认情况下,index.php在URL地址段中的存在一定程度上影响了URL的简洁和SEO的进行。我们可以通过下面本文介绍的方法来去 掉这个讨厌的index.php。 你或许已经注意到在CodeIgni…
扫描二维码继续阅读
2009-05-16