2013-09-17 4 views
2

Я не могу найти ответ на это, глядя на руководство для новичков в сети. Если бы кто-то мог мне помочь, я был бы очень благодарен.Как переписать исходящие ссылки в mod_rewrite?

Все, что я хочу сделать, это переписать ссылки (которые существуют в <a href> тегах) на моей странице, которые выглядят так:

<a href="/mysite/products/product.cfm?id=1">/mysite/products/product.cfm?id=1</a> 

в это:

<a href="/mysite/products/product/1">/mysite/products/product/1</a> 

Все примеры, которые я могу найти в сети о правилах пересылки входящих сообщений, например разрешая дружественный URL-адрес в настоящий URL-адрес.

Но как превратить настоящий URL-адрес в поддельный URL-адрес на моей странице на лету? Я использую Helicon Ape, который в основном является Apache mod_rewrite в IIS 7.5. Я все еще должен поместить все свои правила в .htaccess

Если я использую модуль перезаписи URL-адреса IIS от Microsoft, он позволяет создавать правила «Исходящие», которые переписывают ссылки в вашей разметке HTML «на лету». Вот пример Outbound правила:

<rule name="Rewrite to clean URL" preCondition="IsHTML"> 
<match filterByTags="A" pattern="^/article\.aspx\?id=([0-9]+)$" /> 
<action type="Rewrite" value="/article/{R:1}" /> 
</rule> 

Так что переписывать ссылку в <a> тег, который выглядит как /article.aspx?id=1 и делает его в /article/1

ответ

1

Вы можете использовать:

# externally redirect: /mysite/products/product.cfm?id=1 to /mysite/products/1 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(mysite/products)/product\.cfm\?id=([^\s&]+) [NC] 
RewriteRule^/%1/%2? [R=301,L] 

# internal forward: /mysite/products/1 to /mysite/products/product.cfm?id=1 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(mysite/products)/([^/]+)/?$ /$1/product.cfm?id=$1 [L,QSA,NC] 
Смежные вопросы