Apache mod_rewrite清洁URL

时间:2011-04-06 23:22:17

标签: php apache codeigniter mod-rewrite

我在PHP上使用CodeIgniter,它会生成以下URL:

http://my.domain.com/app/index.php?/admin/main/

/index.php?是多余的,因此我使用以下重写规则成功删除它:

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

然而,我还想删除/app部分,但是当我这样做时,我得到500错误。这与Code Igniter有关 - 或者如何正确地重写此规则(如果可能)?我尝试了以下内容:

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

谢谢!

2 个答案:

答案 0 :(得分:2)

很抱歉,如果htaccess位于项目的主目录中,只需使用下面的通用htaccess代码(这不需要排除目录,例如旧的目标,那么这是编写CI的htaccess的一种非常古老的方式/ p>

RewriteCond $1 !^(index\.php|images|robots\.txt)

所以它也更好,就像我说的那样普遍)

*它不会解决您对目录的问题,但这是CI处理index.php删除的最佳方式,而无需每次添加说文档文件夹或其他内容时都返回。

很棒的htaccess:

# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

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

答案 1 :(得分:0)

尝试添加rewritebase RewriteBase /Path/to/directory/DirectoryBelowApps/