0

私は次のRewriteRulesを使用しています:

RewriteRule ^([a-zA-Z0-9]+)$ page.php?p=$1
RewriteRule ^e/([a-zA-Z0-9]+)$ edit.php?p=$1

最初のものは正常に機能します。mysite.com/idと入力すると、サーバー側でmysite.com/page.php?p=idが読み込まれます。

2つ目も機能しています。mysite.com/e/ idと入力すると、mysite.com / edit.php?p = idが読み込まれます(予想どおり)。しかし、その場合、edit.phpは私のcssファイルのような外部ファイルを見つけることができません。

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

どちらかを行う場合:

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

または、次のようにRewriteRuleのディレクトリを削除するだけです。

RewriteRule ^e_([a-zA-Z0-9]+)$ edit.php?p=$1

それはその問題を修正します。

サーバー側(mysite.com/)の正しいパスに読み込まれ、追加のディレクトリ(この場合はmysite)にURLが表示されないのに、edit.phpが外部ファイルを見つけられない理由がわかりません。 。来て/ )。

4

2 に答える 2

4

次のように、すべてのサイトのパスにベース URL を使用できます。

<base href="http://yoursite.com/blog/" />

また

<base href="/blog/" />

そして、ベースからの相対パスを書きます:

<a href="rule/foo/">...</a>

さらに、適切に使用しないと、スタイルシート、画像、およびその他のメディアと競合する可能性があるため、これらの「すべてを受け入れる」パターンには特に注意する必要があります。パターンに拡張子を追加するか、メディアを除外することで修正できる可能性があります。

于 2012-07-10T10:17:37.223 に答える
0

使用する場合は、相対パスではなくフルパスを記述する必要がありますmod_rewite

参考文献

apachemodはもう
1つの
初心者ガイドを書き直します

于 2012-07-10T10:15:40.103 に答える