0

私は自分のウェブサイトで URL の書き換えに忙しくしていましたが、突然何かが起こったとき、それがどのように起こったのか、どのように可能であり、どうすればこれが起こらないようにするのか、おそらく URL 書き換えルールに小さな間違いがあったのかもしれません。アドレスの前にwwwを強制しますが、wwwを削除すると. Enter キーを押すと、.nl の後ろに / を付けていないため、見つけられないアドレスが表示されます

どういうわけか余分な index.php がその間に修正され、この方法で Web サイト全体が CSS マークアップなしで表示されるようになるとどうなりますか...

再現可能です。例のように追加の index.php を間に合わせるだけで、CSS ファイルからのマークアップなしで Web サイト全体を表示およびサーフィンできます。

[http://www.capoeiravelsen.nl/index.php/index.php?page=home]

ここで実際に何が起こっているのですか?この方法で CSS ファイルを読み取らないのはなぜですか。もちろん、ユーザーは間に余分な index.php を修正するだけではありませんが、これは一種のセキュリティ違反やバグなどを示します....

[編集]

ええ、それは CSS を取得できないため、別のディレクトリなどを検索できないという論理に思えますが、index.php という名前のフォルダーがどこにも存在しないため、他のすべてのドキュメントを取得する方法がまだわかりません。仕方。

この書き換えルールで発生しました:

 RewriteCond %{HTTP_HOST} !^www\.         [NC]
 RewriteCond %{HTTP_HOST} (.*)
 RewriteRule (.*)         http://www.%1$1 [R=301,L]

ここで、アドレスに www を強制しましたが、ランダムなクレイジーなユーザーが www を削除したい場合。Enterキーを押すと、奇妙な効果が発生します。

リクエストは次のように変更されます: [http://www.capoeiravelsen.nlindex.php/?page=home] ブラウザはもちろんそのページが見つからないと言っています

.php と ? の間の / に気付かない .nl と index.php の間に / を入れて [http://www.capoeiravelsen.nl/index.php/?page=home] になり、Enter キーを押しました。

その後、アドレス全体が [http://www.capoeiravelsen.nl/index.php/index.php?page=home] に変更されました。

サイトの閲覧は可能ですが、マークアップなしで...

書き換えルールを次のように変更して、この問題を解決しました。

 RewriteCond %{HTTP_HOST} !^www\.
 RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

ランダムなユーザーがwwwを削除したとき。Enter キーを押しても、おかしなことは何も起こりません。また強制されるだけ

4

3 に答える 3

1

CSSを相対的にリンクしています

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

/index.php/index.php?page=home にアクセスすると、ブラウザは CSS ファイルを探します

/index.php/inc/stylesheet.css

解決策は次のとおりです。

  1. 書き換えを修正して、php ファイルの後に「/」を使用できないようにします (この方法で、OS は「index.php」という名前のフォルダーを探します)。
  2. CSSファイルを絶対にリンクします:つまり:

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

( [ を < :) に置き換えます)

それが役に立てば幸い

于 2012-04-22T12:00:20.147 に答える
0

/index.php/Web サーバーのディレクトリから CSS ファイルをフェッチしようとしますが/、期待どおりではありません。セキュリティ違反ではありません

于 2012-04-22T11:58:39.323 に答える
0

投稿していないため、書き換えルールについてはわかりませんが、CSS が見つからないという問題は、HTML 内のスタイルシートやその他のファイルを相対パスでリンクしているためです。つまり、次のようになります。

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

あなたの URL はhttp://www.capoeiravelsen.nl/index.php/index.php?page=home、ブラウザが の下にあるファイルを要求するためのものですhttp://www.capoeiravelsen.nl/index.php/inc/stylesheet.css。もちろん、これはサーバーには存在しません。

1 つの解決策は、HTML 内のすべてのパスを絶対パスに変更することです。つまり、次のようになります。

<link href="http://www.capoeiravelsen.nl/inc/stylesheet.css" rel="stylesheet" type="text/css">
于 2012-04-22T12:03:50.787 に答える