1

我知道从 CodeIgniter URI 中删除 index.php 很简单RewriteRule ^(.*)$ index.php/$1 [L]。我的问题是由于我的 .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 文件比较陌生;请让我知道那里是否有任何可以针对优化、不良做法等进行调整的内容,其中大部分是通过谷歌漫游创建的!

非常感谢。

4

1 回答 1

1

规则的顺序很重要。尝试移动RewriteRule ^(.*)$ index.php/$1 [L]到底部。记得$config['index_file']在你的application/config/config.php

于 2012-07-05T18:36:46.480 回答