我正在运行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一起使用,并将index.php?$1
替换为index.php/$1
。这适用于Linux机器,但在Windows上却没有。我确定它是服务器配置,但我不知道哪一个。
假设我访问
http://localhost/directory/this_is_query/string_parameters?with_some=additional_ones
.htaccess上$_SERVER['QUERY_STRING']
的{{1}}值为:
index.php?$1
使用string(31) "this_is_query/string_parameters"
:
index.php/$1
在Linux机器上我有:
No input file specified.
作为string(31) "with_some=additional_ones"
的回复。
有什么想法吗?
我在index.php/$1
的FIRST行调试$_SERVER['QUERY_STRING']
变量,没有与Code Igniter的任何交互。
是的,我确实有index.php
。
在问这个问题之前,我看到了这个问题。我仍然处理这个问题。
我添加了新信息。
答案 0 :(得分:1)
我认为您缺少the QSA option将查询字符串附加到结尾:
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]
答案 1 :(得分:0)
使用RewriteRule ^(.*)$ index.php/?$1 [L]