使用查询字符串的 Mod 重写问题

使用查询字符串的 Mod 重写问题

我的 mod 重写规则神秘地从我的查询字符串中截断了句点。

例如这是请求url:

http://mysite/tag/2/Search+For+Articles...

这是我想要的查询字符串:

tag=2&clear=Search+For+Articles...

但这就是我得到的

tag=2&clear=Search+For+Articles

这是我的 mod_rewrite 配置

Options -Indexes
Options +FollowSymLinks
RewriteEngine On

RewriteRule ^tag/([^/]*)/([^/]*)(/?)$ f.php?tag=$1&clear=$2 [L,QSA]

我该如何解决这个问题?

答案1

我认为问题可能出在您的 Apache 配置本身上...我f.php在我的一台 Apache2 服务器上创建了一个简单的脚本,它仅由以下内容组成:

<pre>
<?php
print_r($_SERVER);
?>
</pre>

然后,我创建了.htaccess包含您在问题中指定的确切内容的文件。现在,当我点击时,http://my.server.com/tag/2/Search+For+Articles...我得到了 404 错误。但是,如果我按预期调用它,http://my.server.com/f.php?tag=2&clear=Search+For+Articles...我就会得到我预期的输出。然后,我返回到我的 Apache 配置,发现我所工作的路径的目录列表有,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
)

我已经清理了一些特定于我的服务器的变量,但正如您所见,QUERY_STRING 符合预期。

相关内容