2

問題:一部のリンクが壊れる原因となる URL を書き換えます。

.htaccess には以下のルールがあります。

RewriteRule ^blog/([0-9]+)/[-0-9a-zA-Z]+$ index.php?action=blog&postID=$1\%23disqus_thread [NC]

ヘッダー テンプレートのスタイル シート参照:

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

クリックできます:

domain.com/blog/1/title-of-article でファイルに問題なくアクセスできるが、スタイル シートのリンクが壊れる

私が直接行く場合:

domain.com/index.php?action=blog&postID=1#.UYV1mcqRiSo の場合、スタイル シートは正常に読み込まれます(Disqus のコードである #.UYV1mcqRiSo は無視します)

これは、次のロゴ リンクにも影響します。

<a href="./">

domain.com に移動する代わりに、domain.com/blog/1/ に移動します。

私の基本的なファイル構造は次のとおりです。

index.php と style.css はルートにあり、viewPost.php を /templates フォルダーにロードします。

どうすれば修正できますか?

4

2 に答える 2

4

1.スタイルシートリンクについて

書き換えルールの前に、.htaccess に次の条件を含める必要があります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

1 つ目は、要求された URL が既存のファイルに対するものではない場合にのみ書き換えルールが機能することを意味し、2 つ目は既存のディレクトリに対して同じことを行います。これらの条件がなければ、リクエストはファイルに直接渡されるのではなく、ファイルにstyle.cssも渡されます。index.phpstyle.css

これらのルールが既にあり、それでも機能しない場合は、URL パスに問題があります。以下を参照してください。

2.URLパスについて

<a href="./">タグ内とタグ内の両方で、リンクに相対 URL を使用しています<link>。この場合、それらは URL の現在のディレクトリに解決されます (同じファイルのサーバー側に書き換えられても問題ありません。クライアント側でパスが用意され、スラッシュで区切られたすべての部分/がディレクトリとして扱われます。したがって、現在の URL がdomain.com/blog/1/の場合、 domain.com/blog/1/./解決されます。) へのパスはdomain.com/blog/1/style.cssに解決される場合があります。これらのリンクが URL のドメイン名の直後にあるかのように機能させたい場合は、絶対 URL を使用する必要があります。つまり、ロゴのリンクにドットを付けないでください。スタイルシートのリンク。style.css//style.css

于 2013-05-04T21:23:00.190 に答える
2

最も簡単な解決策: リンクの前にスラッシュを付けて、ドメイン ルートを基準にしてリンクを設定するだけです (リンク内の現在のフォルダーを参照するドットを削除します)。

<link rel="stylesheet" type="text/css" href="/style.css" />
<a href="/">Logo</a>
于 2013-05-04T21:22:41.103 に答える