0

.htaccessファイルを介してリダイレクトするにはどうすればよいですか。URLを介してアクセスできるのはindex.htmlのみです。私はすでにこれを手に入れました:

RewriteEngine on
RewriteBase /
Options +FollowSymlinks

RewriteRule ^/?login/?$ /php/login.php [NC,R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html [L,QSA]

誰かが「www.mypage.com/skd/lasnd」などと入力すると正常に機能しますが、誰かがWebサーバーに存在するファイル(「www.mypage.com/php/login.php」など)を入力すると、そのページにリダイレクトされます。それを禁止する方法は?

より正確に言うと、JavaScriptとPHPスクリプトは、引き続きWebサーバー上のすべてのファイルにアクセスできるようにする必要があります。

4

2 に答える 2

6

これらの行:

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

「REQUEST_FILENAME がファイルでない場合、REQUEST_FILENAME がディレクトリでない場合」という条件があり、両方が満たされている場合、RewriteRule が実行されます。これは通常、「わかりやすい URL」を機能させ、同時に画像や css などを書き換えないようにするためです。ファイルへのアクセスはさまざまな方法でブロックできますが、ブロックしすぎないように注意する必要があります (前述の画像など)。等)。最も簡単な方法は、ファイルをサブディレクトリに置き、.htaccessそのディレクトリに別のファイルを次の行で追加することです

Deny From All

これにより、httpd はそのディレクトリとサブディレクトリにあるすべてのリクエストを拒否し (別.htaccessのルールが上書きされない限り)、スクリプトは問題なくそれらにアクセスできます。

mod_rewrite ドキュメントを読むことを強くお勧めします

編集

「私のJavaScript」と「彼らのJavaScript」はありません。リクエストがあり、それがあなたが確実に伝えることができるすべてです。どれが自分のものでどれがそうでないかはわかりません。「ブラウザのアドレス行に入力してリクエストを拒否したいだけです」-それもわかりません。理論的には REFERER をチェックできます。何も設定されていない場合は、直接ヒットしたと見なされますが、REFERER はブラウザから取得されるため、偽造することもできますそして、私は個人的にデフォルトですべての REFERERS をブロックしているので、私のすべてのリクエストには、直接的でなくても REFERER がありません。Cookie を試すこともできますが、これもスクリプトで取得して送り返すことができます。唯一の実際のオプションは、Deny from allこれらのファイルにアクセスし、ある種のスクリプト (PHP など) を介してそれらを「調整」することです。file()ユーザーが以前にログインとパスワードを使用して自分自身を認証した場合。それ以外の試みは最初から失敗します。

于 2012-11-16T10:20:39.213 に答える
0

以下を試してください

RewriteRule /.* http://www.new-domain.com/index.html
于 2012-11-16T10:16:04.800 に答える