1

次の mod_rewrite ルールを使用しています。

  **RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
    RewriteRule ^(.*)$ $1.php [L]**

次のようなきれいなURLを取得するには

  www.myweb.com/login

から

 www.myweb.com/login.php

別の書き換えルールを使用しています

**RewriteRule ^itemdetail/([0-9]+)/?$ itemdetail.php?itemid=$1 [NC,L]**

取得するため

 www.myweb.com/itemdetail/100008

から

 www.myweb.com/itemdetail?itemid=100008.

これで問題なく動作しますが、問題が 1 つあります。この書き換えルールは、すべてのリンクにサブドメインを追加します。例えば。css ファイルへのリンクが text.css の場合、この css ファイルへのリンクは itemdetail/text.css になります。ホームページへのリンクは、www.myweb.com/home ではなく、www.myweb.com/itemdetail/home になりました。ここで何が間違っていますか。助けてください。

4

1 に答える 1

0

この書き換えルールは、すべてのリンクにサブドメインを追加します。例えば。cssファイルへのリンクがtext.cssの場合、このcssファイルへのリンクはitemdetail/text.cssになります。ホームページへのリンクは、www.myweb.com/homeではなくwww.myweb.com/itemdetail/homeになりました。私はここで何を間違っているのですか。

これに対処するには、次の2つの方法のいずれかを実行できます。itemdetail.phpページのヘッダー(<head> </head>タグ内)にこれを追加します。

<base href="/">

/または、先頭の例を追加して、cssリンクを相対URLから絶対URLに変更することもできます。

<link rel="stylesheet" href="/text.css" type="text/css">

それ以外の場合は、CSSリンクの書き込みを取り消すために書き換えルールを追加してみることができますが、意図的に使用するとサブディレクトリのCSSが壊れてしまうため、通常は非常に悪い考えです。

RewriteRule ^itemdetail/(.*?)\.css$ /$1.css [L]
于 2012-09-17T22:50:52.823 に答える