Назад | Перейти на главную страницу

У меня есть запрос о mod_rewrite

Во-первых, я все еще новичок в mod_rewrite.
Всем, если у меня есть этот код .htaccess

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

Необходимо изменить форму ссылки (href) на

пример

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

Или оставить все как есть

пример

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

Если оставить как есть <a href="index.php?usr=5">Click Here</a> Ссылка будет отображаться таким образом http://domain.com/index/image/.

ИЗМЕНИТЬ # 1

Вот образец 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>

Я думаю, ваша проблема в том, что вам приходится иметь дело с PATH и QUERY_STRING как 2 отдельных элемента.

http://some.server/sections.php?cid=5
                   ^^^^^^^^^^^^ ^^^^^
                   ||||         ||||
                   path         query string

Попробуйте такой набор правил:

RewriteEngine on
RewriteCond %{QUERY_STRING}     ^$            [OR]
RewriteCond %{QUERY_STRING}     ^cid=(.*)$    [NC]
RewriteRule ^/sections.php$     /sections/%1? [NC,L,R=301]

Эти правила делают следующее. 1-й RewriteCond пропускает, если нет QUERY_STRING. 2-й RewriteCond сохраняет бит после знака равенства в переменной, %1. Последняя строка, RewriteRule, строит наши новые PATH, / разделы /% 1, в любое время /sections.php линия встречается и имела QUERY_STRING, cid = ....

Пример HTML-файла:

<html>
  <body>
  <a href="/sections.php?cid=5">Click Here</a>
  </body>
</html>

Если навести указатель мыши на ссылку "Щелкните здесь" на странице выше, можно увидеть следующее:

http://localhost/sections.php?cid=5

При нажатии на эту ссылку я попадаю на этот URL:

http://localhost/sections/5

my / var / www / html имеет следующее:

% tree /var/www/html
/var/www/html
|-- test.html
`-- sections
    `-- 5

1 directory, 2 files

Ресурсы

Нет. RewriteRule имеет значение только тогда, когда пользователь делает запрос к серверу. Это не влияет на то, что они увидят при наведении курсора на ссылку, и не меняет адрес, который они видят. из на что вы его измените к от чего вы его меняете (имеется в виду: вы переписываете index/image/ к index.php?usr=image; это не изменит его по-другому, от index.php к index/image/).