Codeigniter:重写以删除index.php不起作用

时间:2013-01-22 20:39:21

标签: php apache .htaccess codeigniter mod-rewrite

我刚从本地服务器(XAMPP)上传了我的网站。它在本地工作,但由于某种原因,将index.php添加到我的SEF URL的重写在我的公共服务器中不起作用。这就是我现在所拥有的:

# Avoid listing directory
Options -Indexes

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on

# manage language segment 
RewriteRule ^(es|en)/(.*) $2?lang=$1 [L]

# code that allows to get rid of index.php from URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

</IfModule>

这些网址的工作:

www.example.com

www.example.com/index.php/aboutme

虽然这样的网址会产生 500错误

www.example.com/aboutme

这是条件和规则的另一种组合,我试图解决index.php的删除问题:

RewriteCond $1 !^(index.php|css|img|scripts|ckeditor|robots.txt|sitemap.xml) 
RewriteRule ^(.*)$ index.php/$1 [L]

但是对于没有index.php的任何网址,它会产生500错误,包括根网址www.example.com

你可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

你的RewriteRule中似乎有一个拼写错误。

试试这个:

RewriteCond $1 !^(index.php|css|img|scripts|ckeditor|robots.txt|sitemap.xml) 
RewriteRule ^(.*)$ /index.php/$1 [L]

它适用于Code Igniter。与你的第二个例子相比,唯一的区别是index.php的斜线。