我使用以下.htaccess:
AddDefaultCharset utf-8
RewriteEngine On
RewriteBase /
DirectoryIndex index.php
Options All -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
Codeigniter中的设置:
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
因此,所有网页都是通过网址路径domain/index.php/page
但它不适用于domain/page
答案 0 :(得分:0)
RewriteRule ^(.*)$ /index.php?/$1 [L]
尝试将以上行更改为以下内容:
RewriteRule (.*) index.php/$1 [L]
具体而言,替换中的?
被删除。因此,不是将请求的URL作为查询字符串的一部分传递(这会阻止使用任何其他查询字符串),而是将其作为附加的PATH INFO传递。
RewriteRule
模式周围的锚也不是必需的。并且替换上的斜杠前缀也可以被删除 - 这就是RewriteBase
指令的用途。
Options All -Indexes
此外,这不是严格有效的。你不应该把+/- params与那些没有的人混在一起。这应该只是:
Options -Indexes
答案 1 :(得分:0)
试试这个.htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
在配置文件
中$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';