4

.htaccess に次の書き換えルールがあります。

RewriteRule ^groups/([^/\.]+)/?$  groupdetail.php?gname=$1 [L,NC]

これは、www.example.com/groups/groupname のようなものを取り、www.example/groupdetail.php?gname=groupname を呼び出します。そして、それはうまく機能します。

しかし、groupdetail.php のすべての相対リンクは、groups/ を相対パスとして使用しています。どうすればこれを回避できますか?

たとえば、ユーザーが<a href="link.php">groupdetail.php?gname=groupname のリンクをクリックすると、www.example/groups/link.php に移動します。ユーザーを www.example.com/link.php に誘導したいと考えています。

明らかに、「www.example.com/groups/groupname」のようにユーザーに URL を表示したいので、[R]/redirect を使用したくありません。

4

6 に答える 6

5

私のように、ページに何百もの相対リンクがある場合は、絶対パスを使用し<base href="">てにを挿入します(相対パスも使用できます)。IEとFirefoxはベースhrefの扱いが異なるため<head>、.jsファイルへのパスも絶対に作成する必要があります。<head>私はそれが厄介な問題であることに同意します。

于 2008-10-15T22:24:56.643 に答える
3

相対リンクはサーバーではなくブラウザによって解決されるため、mod_rewrite でできることは何もありません。

相対リンクを使用して階層を上る ( ../link.php) か、絶対リンクを使用します。

于 2008-10-01T01:18:20.093 に答える
2

ページを移動するために絶対リンクを使用したくない場合は<base>、次のように php でベースを生成できます。

echo '<base href="http://'.$_SERVER['SERVER_NAME'].str_replace("index.php","",$_SERVER['PHP_SELF']).'" />';
于 2011-12-01T04:49:33.850 に答える
1

書き換えルールを変更して強制リダイレクトを行う([R] オプションを追加する) と、ブラウザーは /groupdetail.php URL を使用し、相対リンクは正常に機能します。ただし、これによりリダイレクトが 1 つ追加され、URL の見栄えが悪くなります。

RewriteRule ^groups/([^/.]+)/?$ groupdetail.php?gname=$1 [L,NC,R]
于 2008-09-27T22:59:28.160 に答える
1

絶対パスを使用したくない場合は、BASE タグを使用できます。

http://www.w3schools.com/tags/tag_base.asp

于 2009-12-30T14:40:17.390 に答える
0

ホップの答えは正しいです。ブラウザーはwww.example.com/groups/groupnameアドレスとして認識し、それ/groupsが現在のディレクトリであると見なします。そのため、 のようなリンクはすべてフォルダー内<a href=link.php>にあると見なされ/groupsます。

ユーザーがマウスをリンクの上に移動するwww.example.com/groups/link.phpと、リンク アドレスが表示されます。

解決策は、絶対リンクを使用することです。href の前にスラッシュを追加するだけです。

<a href=/link.php>

ユーザーはwww.example.com/link.phpURL として表示されます。

とは言え、ご質問のとおり、わざと相対リンクを使っているようですが、絶対リンクを使わない理由はありますか?

于 2009-03-04T05:49:54.687 に答える