我的国防部重写规则神秘地切断了我查询string的时间。
例如,这是请求url:
http://mysite/tag/2/Search+For+Articles...
这是我想要的查询string:
tag=2&clear=Search+For+Articles...
但是这是我得到的
tag=2&clear=Search+For+Articles
这是我的mod_rewriteconfiguration
Options -Indexes Options +FollowSymLinks RewriteEngine On RewriteRule ^tag/([^/]*)/([^/]*)(/?)$ f.php?tag=$1&clear=$2 [L,QSA]
我该如何解决这个问题?
我认为这个问题可能与你的Apacheconfiguration本身有关…我在我的一个Apache2服务器上创build了一个简单的f.php脚本,它只是由以下内容组成:
<pre> <?php print_r($_SERVER); ?> </pre>
然后我用你在问题中指定的确切内容创build了.htaccess文件。 现在,当我打http://my.server.com/tag/2/Search+For+Articles...我有一个404错误。 但是,如果我把它叫做http://my.server.com/f.php?tag=2&clear=Search+For+Articles...我得到了我期望的输出。 然后我回到我的Apacheconfiguration,发现我工作的path的目录列表有AllowOverride None所以我把它改为AllowOverride All并试图/tag/...前缀的URI和低,看到我收到以下输出:
Array ( [REDIRECT_STATUS] => 200 [HTTP_HOST] => my.server.com [PATH] => /usr/local/bin:/usr/bin:/bin [DOCUMENT_ROOT] => /var/www [SERVER_ADMIN] => webmaster@localhost [SCRIPT_FILENAME] => /var/www/f.php [REMOTE_PORT] => 35393 [REDIRECT_QUERY_STRING] => tag=2&clear=Search+For+Articles... [REDIRECT_URL] => /tag/2/Search+For+Articles... [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => tag=2&clear=Search+For+Articles... [REQUEST_URI] => /tag/2/Search+For+Articles... [SCRIPT_NAME] => /f.php [PHP_SELF] => /f.php [REQUEST_TIME] => 1313889895 )
我已经清理了一些特定于我的服务器的variables,但正如您所看到的,QUERY_STRING是预期的。