Mod Regrair problema com strings de consulta

2

Minha regra de reescrita mod diminui misteriosamente os períodos da minha string de consulta.

Por exemplo, este é o URL da solicitação:

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

esta é a string de consulta que eu quero:

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

mas é isso que eu recebo

tag=2&clear=Search+For+Articles

Aqui está minha configuração do mod_rewrite

Options -Indexes
Options +FollowSymLinks
RewriteEngine On

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

Como posso resolver este problema?

    
por needHELP 20.08.2011 / 20:51

1 resposta

0

Eu acho que o problema pode estar com a própria configuração do Apache ... Eu criei um script f.php simples em um dos meus servidores Apache2 que simplesmente consistiam no seguinte:

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

Eu, então, criei o arquivo .htaccess com o conteúdo exato que você especificou na sua pergunta. Agora, quando atingi http://my.server.com/tag/2/Search+For+Articles... , recebi um erro 404. No entanto, se eu chamei como http://my.server.com/f.php?tag=2&clear=Search+For+Articles... , obtive a saída que esperava. Em seguida, voltei para a configuração do Apache e descobri que a listagem de diretórios para o caminho em que eu estava trabalhando tinha AllowOverride None , então alterei para AllowOverride All e tentei o /tag/... com prefixo URI e baixo e eis que recebi a seguinte saída :

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
)

Limpei algumas das variáveis específicas do meu servidor, mas como você pode ver, QUERY_STRING é o esperado.

    
por 21.08.2011 / 03:33