我知道用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上游荡而创建的!
非常感谢。
答案 0 :(得分:1)
您的规则顺序很重要。尝试将RewriteRule ^(.*)$ index.php/$1 [L]
移到底部。请务必在$config['index_file']
application/config/config.php