无法从codeigniter网站网址中删除index.php?

时间:2012-11-26 18:17:30

标签: php .htaccess codeigniter url indexing

我已阅读有关其删除的指南,他们告诉我将其添加到我的htdocs根目录中的.htaccess:

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

但是我的网站目录是这样的:htdocs \ mywebsite \

我尝试在htdocs和mywebsite中添加htaccess文件,但没有结果。 我也尝试修改最后一行看起来像

RewriteRule ^(.*)$ mywebsite/index.php/$1 [L]

在htdocs和mywebsite目录中。但是我不知道什么是正确的.htaccess语法或它是如何工作的,所以我真的没想到它会起作用。

我也尝试在codeigniter目录树中的其他地方修改.htaccess文件。

3 个答案:

答案 0 :(得分:3)

你看过这个吗? How to remove "index.php" in codeigniter's path

您是否更改了配置文件中的index_path变量?这是application / config / config.php,版本2.1.3中的第29行

答案 1 :(得分:1)

根目录和网站目录中都需要有一个htaccess文件。他们需要包含相同的内容,除了root中的文件需要更新索引的路径以包含您的网站目录。

Root dir:

RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ yourwebsite/index.php/$1 [QSA,L]

Web目录:

RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]

答案 2 :(得分:0)

确保在虚拟主机条目中有此内容:

    <Directory "/path...to directory">
        Order allow,deny
        Allow from all
        Allowoverride all
    </Directory>

    <IfModule mod_rewrite.c>
        RewriteEngine on
    </IfModule>

除了根目录外,您不需要修改任何.htaccess文件。如上所述,请确保在config.php文件中设置了一些内容。