2011-10-10 136 views
1

我有一个应用程序,使用完整的网址时效果很好:sitename.com/index.php/foo/,但是当我使用HTaccess删除index.php它似乎不工作如预期。无论我访问哪个页面,我只能看到主页。 htaccess文件正在做一些事情,因为没有这一行我得到一个404错误。HTaccess不重新路由[CodeIgniter]

RewriteEngine on 
    RewriteCond $1 !^(index\.php|assets|file-manager-files|robots\.txt|favicon\.ico) 
    RewriteRule ^(.*)$ /index.php/$1 [L] 

想法?

在我的测试网站上,一切正常。这是一个需要调整的服务器设置吗?

回答

1

使用CodeIgniter你想是这样的:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    #Removes access to the system folder by users. 
    #Additionally this will allow you to create a System.php controller, 
    #previously this would not have been possible. 
    #'system' can be replaced if you have renamed your system folder. 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #When your application folder isn't in the system folder 
    #This snippet prevents user access to the application folder 
    #Submitted by: Fabdrol 
    #Rename 'application' to your applications folder name. 
    RewriteCond %{REQUEST_URI} ^application.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #Checks to see if the user is attempting to access a valid file, 
    #such as an image or css document, if this isn't true it sends the 
    #request to index.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    # If we don't have mod_rewrite installed, all 404's 
    # can be sent to index.php, and everything works as normal. 
    # Submitted by: ElliotHaughin 

    ErrorDocument 404 /index.php 
</IfModule> 

如果不工作,检查以确保$config['index_page'] = '';和你的.htaccess指令设置正确:

<Directory "/some/absolute/path/htdocs"> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride AuthConfig FileInfo 
Order allow,deny 
Allow from all 
</Directory> 

我已经做了数百个Codeigniter安装在许多操作系统配置上,并始终能够实现这个目标,但偶尔我遇到了一些问题,我不得不去创造性地让index.php消失。

+1

感谢您的解决方案!我仍然非常天真与mod重写,但这使一切工作。 我仍然不明白为什么我以前的htaccess文件在一台服务器上工作,而不是在下一台服务器上工作,但我很高兴看到这个解决方案能够正常工作。 – BFTrick

0

RewriteCond错误。在第一个参数中,你必须使用什么来检查。例如请求的URI,脚本文件名等。在上面的例子中,它看起来像你试图比较$ 1(dolar和one)到Rewrite Condition的右边部分:?

+0

不符合条件:{匹配任何内容,但不是a,b,c}? [使用相同语法的CI示例](http://codeigniter.com/user_guide/general/urls.html) – BFTrick

+0

该教程将帮助您解决问题;)http://www.askapache.com/htaccess/crazy -advanced-mod_rewrite-tutorial.html –