Acho que seu problema é que você precisa lidar com PATH
e QUERY_STRING
como dois elementos separados.
http://some.server/sections.php?cid=5
^^^^^^^^^^^^ ^^^^^
|||| ||||
path query string
Experimente um conjunto de regras assim:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^$ [OR]
RewriteCond %{QUERY_STRING} ^cid=(.*)$ [NC]
RewriteRule ^/sections.php$ /sections/%1? [NC,L,R=301]
Essas regras estão fazendo o seguinte. 1 RewriteCond
está pulando se não houver QUERY_STRING
. O segundo RewriteCond
salva o bit após o sinal de igual em uma variável, %1
. A última linha, RewriteRule
, constrói nossa nova PATH
, / sections /% 1 , sempre que uma linha /sections.php é encontrada, e teve um QUERY_STRING
, cid = ... .
Um arquivo html de amostra:
<html>
<body>
<a href="/sections.php?cid=5">Click Here</a>
</body>
</html>
Passar o mouse sobre o link Clique aqui na página acima mostra isso:
http://localhost/sections.php?cid=5
Clique neste link para acessar este URL:
http://localhost/sections/5
meu / var / www / html tem o seguinte:
% tree /var/www/html
/var/www/html
|-- test.html
'-- sections
'-- 5
1 directory, 2 files
Recursos