
No.4ベストアンサー
- 回答日時:
かなりざっくりですが、PHPのコードです。
拡張子を401.htmから401.phpに変えてください
.htaccess
ErrorDocument 401 /401.php?id=2
401.php
---------
<h2>ページへのアクセス権限がありません</h2>
<a>「<script>document.write(location.href);</script>」へのアクセス権限がありません。</a>
<div class="readid">
<?php
# idを取得
$id = filter_input(INPUT_GET, "id");
if($id == "2"){
echo "このページはreadディレクトリ内です。パスワード/ユーザー名が間違っている可能性が高いです。";
}
?>
</div>
<h3>対処方法</h3>
【省略】
</body>
No.3
- 回答日時:
401.htmの内容確認しました。
残念ながらJavaScriptでは値の取得ができません。
ErrorDocumentはリダイレクトではなく、指定のファイルを読み込みに行くという設定です。
アクセスしたURLが「http://****/basic.htm」で認証エラーになった場合、
画面に表示する内容は401.htm?id=2ですが、JavaScriptでは現在のURLはhttp://****/basic.htmと認識してます。
※ブラウザのURLを見てもらえれば分かると思います
401エラーの場合は外部URLへのリダイレクトは基本NGということなので、PHP等のプログラムを使用したほうがいいのかと思いました。
ありがとうございます。
この回答を読んで、試しに401が出たページのURLの末尾に?id=2を付けたところ、<div class="readid"></div>の中に文字列が表示されました。JavaScriptでのidのではできないことがわかりました。
PHPでやりたいのですが、どうしたらいいのでしょうか。私はPHPはリダイレクトをする方法くらいしか分からないので、できれば実際のコードも教えていただきたいです。よろしくお願いいたします。
No.2
- 回答日時:
それだと401.htmの中身に何かしらの問題がありそうですね。
私のテストで下記コードで「123です。」と返ってきてます。
----
if($_GET["a"] == "123"){
echo "123です。";
} else {
echo "違うよ";
}
----
ありがとうございます。
401.htmはこれです。
【省略】
<h2>ページへのアクセス権限がありません</h2>
<a>「<script>document.write(location.href);</script>」へのアクセス権限がありません。</a>
<div class="readid"></div>
<h3>対処方法</h3>
【省略】
</body>
<script>
const urlParams = new URLSearchParams(window.location.search);
const id = urlParams.get('id');
if (id === '2') {
document.querySelector('.readid').textContent = 'このページはreadディレクトリ内です。パスワード/ユーザー名が間違っている可能性が高いです。';
}
</script>
</html>
No.1
- 回答日時:
「上手くいきませんでした」というのはid=2が受け取れなかったということでしょうか?
こちらで試してみたところ正常に値を受け取れました。
■htaccessに下記を記述
ErrorDocument 401 /401.php?a=123
■認証が必要なURL
http://***/401/test.html
401.phpに遷移し、a=123を取得できています。
401.htmの内容が表示されずにデフォルトの401画面が表示される場合。
その401.htmファイルが要認証のディレクトリに置いてたりしますか?
リダイレクト先は認証外のディレクトリに置きましょう。
ありがとうございます。
401.htmで、id=2のときには追加で内容を表示するように、そのほかの時はすべて同じになっています。.htaccessにErrorDocument 401 /401.htm?id=2と記述しても401を意図的に出すとid=2の時に表示されるはずの部分が表示されずにid=1のときの内容しか表示されないのです。401.htmに普通にアクセスすると普通に表示され、401.htm?id=2に普通にアクセスするとちゃんと追加の内容が表示されています。401.htm?id=1でも普通に表示されます。どうしてでしょうか。教えてください。よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
if関数とは?
-
プログラム言語
-
今のプログラミング言語
-
著作権法について
-
vba クリップボードクリアにつ...
-
画像生成AIのプロンプトの作り...
-
プログラミングについて
-
pythonの実行に関する質問
-
OS入ってる機器のソフト・アプ...
-
プログラミングに興味があるの...
-
CSVファイルの複数行削除
-
COPYコマンドで、最後に1文字...
-
10進数から2進数に変換 例 185 ...
-
自作scratch アニメの商用利用
-
数学、プログラミング、物理、...
-
従業員が1名だけのSierっている...
-
pip --versionがエラーになる
-
Python 3.12.2 か一番最新のパ...
-
VBAでパワーシェルを実行したい...
-
Google ColaboでGUI作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語
-
vba クリップボードクリアにつ...
-
プログラミングについて
-
画像生成AIのプロンプトの作り...
-
自作scratch アニメの商用利用
-
今のプログラミング言語
-
CSVファイルの複数行削除
-
Python... 環境設定 初心者です...
-
Python 3.12.2 か一番最新のパ...
-
数学、プログラミング、物理、...
-
パイソンのソースコードをChatG...
-
pythonの実行に関する質問
-
pip --versionがエラーになる
-
Geminiフォーム 画像生成で 人...
-
OS入ってる機器のソフト・アプ...
-
Google ColaboでGUI作成
-
google Colabでmatplotlibの描...
-
Webサイト内に埋め込んだmp4動...
-
初心者powershellのPS1ファイル...
-
VBAでパワーシェルを実行したい...
おすすめ情報