Во-первых, я все еще новичок в 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/
).