Tenho uma pergunta sobre mod_rewrite

1
Primeiramente eu ainda sou iniciante no mod_rewrite.
Todo mundo se eu tiver esse código .htaccess

RewriteEngine On
RewriteRule ^index/(.*)/$ index.php?usr=$1 [L]

É preciso alterar a forma do link (href) para

Exemplo

<a href="index/image/">Click Here</a>

Ou deixando como está

Exemplo

<a href="index.php?usr=5">Click Here</a>

Se deixar como é <a href="index.php?usr=5">Click Here</a> mostrará o link desta forma http://domain.com/index/image/ .

EDIT # 1

Aqui está uma amostra do código html.

<div id="main_menu"> 
  <ul> 
    <li><a href="index.php">{$lang.Nav_Home}</a></li> 
    <li><a href="sections.php?cid={$value.cat_id}">{$value.cat_name}</a></li> {else} 
    <li id="moreSection_{$secNum}" style="display: none;"><a href="sections.php?cid={$value.cat_id}">{$value.cat_name}</a></li> 
    <li><a href="javascript:;" onclick="showHideMoreSec('moreSection',this)"> <img src="images/arrow_down.png" alt="{$lang.MainMenu_MoreSection}" title="{$lang.MainMenu_MoreSection}" /> </a></li> 
  </ul> 
</div>
    
por Lion King 31.12.2012 / 23:37

2 respostas

2

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

por 01.01.2013 / 02:47
1

Não. O RewriteRule só importa quando o usuário faz uma solicitação ao servidor. Isso não afeta o que eles verão quando passar o mouse sobre o link, e não mudará o endereço que eles vêem de o que você muda para para o que você muda de (significando: você está reescrevendo index/image/ para index.php?usr=image ; não vai mudar de outra maneira, de index.php para index/image/ ).

    
por 31.12.2012 / 23:56