index.php是在www之后添加的。用.htaccess删除

时间:2012-07-05 18:09:11

标签: .htaccess codeigniter

我知道用RewriteRule ^(.*)$ index.php/$1 [L]从CodeIgniter URI中删除index.php很简单。由于我的.htaccess文件中有其他一些规则,我的问题正在发生。

我的问题是,当用户访问www.mydomain.com/blog时,他们被重定向到mydomain.com/index.php/blog,当有斜杠时不会发生这种情况; www.mydomain.com/blog/正确地重定向到mydomain.com/blog。我真的不希望index.php在那里。另外一个注意事项是,理想情况下,用户应该在URL中输入index.php,我希望它们不是URL。

我当前的.htaccess文件是这样的:

RewriteEngine on
RewriteBase /

# Protect CI system folders
RewriteCond %{REQUEST_URI} ^/(application|system)/(.*)$
RewriteRule ^(.*)$ index.php/$1 [L]

# Prevent rewriting URIs that exist: (-d directory -f files)
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

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

# Remove www.
RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC]
RewriteRule ^(.*)$  http://mydomain.com/$1 [R=301,L]

# Remove trailing slash
RewriteRule ^(.+)/$ http://mydomain.com/$1 [R=301,L]

我对调整.htaccess文件比较陌生;如果有任何内容可以根据优化,不良做法等进行调整,请告诉我,其中大部分都是通过在Google上游荡而创建的!

非常感谢。

1 个答案:

答案 0 :(得分:1)

您的规则顺序很重要。尝试将RewriteRule ^(.*)$ index.php/$1 [L]移到底部。请务必在$config['index_file']

中设置application/config/config.php