2

我正在运行 Code Igniter,我的 .htaccess 是:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?$1 [L]
    RedirectMatch 404 /\\.svn(/.*|$)
</IfModule>

然后我意识到没有 $_GET 变量通过。

我按照一些说明创建 .htaccess 以与 Code Igniter 一起使用,并将 .htaccess 替换index.php?$1index.php/$1. 这适用于 linux 机器,但在 Windows 上则不行。我确定这是一个服务器配置,但我不知道是哪一个。

假设我访问

http://localhost/directory/this_is_query/string_parameters?with_some=additional_ones

on .htaccess的$_SERVER['QUERY_STRING']值是:index.php?$1

string(31) "this_is_query/string_parameters" 

并与index.php/$1

No input file specified. 

在 Linux 机器上,我有:

string(31) "with_some=additional_ones"

作为回应index.php/$1

有什么想法吗?


我正在调试$_SERVER['QUERY_STRING']FIRST 行上的变量index.php,与 Code Igniter 没有任何交互。

是的,我有mod_rewrite

这与Codeigniter 没有指定输入文件错误相同

在问这个问题之前,我看到了这个问题。我仍然有这个问题。

我添加了新信息。

4

2 回答 2

1

利用 RewriteRule ^(.*)$ index.php/?$1 [L]

于 2012-10-11T21:49:09.510 回答
1

我认为您缺少将查询字符串附加到末尾的 QSA 选项:

RewriteRule \.svn/ - [F,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

为了让查询参数井井有条,如果 CodeIgniter 允许,我建议设置一个参数名称:

RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
于 2012-10-11T21:29:40.413 回答