使用.htaccess路由到正确的index.php

时间:2014-03-17 23:01:24

标签: php apache .htaccess codeigniter codeigniter-2

我的Codeigniter .htaccess文件出现问题......基本上就是这样。

常规.htaccess文件(适用于我的localhost):

RewriteEngine On
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

我正在放置所有文件的网站文件夹结构:

website.com/
    css/
    js/
    img/
    index.html
    dev/
        application/
        assets/
        system/
        index.php
        .htaccess <<< A problem now exists with this file

当我转到index.html文件的website.com/dev/ 而不是时,网站正在尝试加载index.php文件。

我尝试了.htaccess文件的不同变体,但我得到500服务器错误或index.html文件。

如何将website.com/dev/路由到正确的index.php文件?

提前致谢! 文森特威尔基


更新


我有一个部分工作的.htaccess文件:

RewriteEngine On
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteRule ^(.*)$ http://website.com/dev/index.php/$1 [L]

这只是部分有效,因为网址现在显示.../dev/index.php/controller/method/args

我知道使用mod_rewrite的重点是从网址中删除index.php ... :(

2 个答案:

答案 0 :(得分:0)

你有这个目录结构的原因吗?因为不建议采用这种结构,这可能意味着你遇到了很多问题而不是你想要一个像

这样的目录结构
website.com/
    application/
    system/
    assets/
        css/
        js/
        img/
        index.php
        .htaccess

您希望将applicationsystem目录置于比您的网络根目录(assets)更高的级别,以便从安全角度来看它们不可公开访问。

答案 1 :(得分:0)

我有相同的目录结构。试试这个。

<强>的.htaccess

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

注意:我假设您将该网站用作 website.com/dev/

希望这会有所帮助:)