実現したいこと
FTPサーバーに存在しないフォルダをURLで指定したら、404エラーになってほしい
前提
FTPサーバーのルートに
「bbb」というフォルダは存在しないが、
「bbb.html」というファイルは存在する。
「ccc.jpg」は存在しない。
発生している問題
FTPサーバーのルートに「bbb」というフォルダは存在しないのに
https://aaa/bbb/
と指定するとなぜか「bbb.html」が表示される
存在しないフォルダ「bbb」の中の存在しない画像「ccc.jpg」についても404エラーになってほしいのに
https://aaa/bbb/ccc.jpg
でアクセスするとなぜか「bbb.html」の内容が表示されます。
試したこと
●URLの指定方法を調べる
https://pr.toriaez.jp/navi/column/404.html
↓
●サーバーの設定を管理者に聞く
『Apache』の設定によるものであり、
「.htaccess」に「Options -MultiViews」と記述で改善するかもとの回答。
ただしサポート対象外、自己責任でとのことなので、不安が残る
↓
●MultiViewsについて調べる
https://httpd.apache.org/docs/2.4/ja/content-negotiation.html
↓
●MultiViewsについてわかったこと
サーバが /some/dir/foo へのリクエストを受け取り、
/some/dir で MultiViews が有効であって、
/some/dir/foo が存在しない場合、
サーバはディレクトリを読んで foo.* にあてはまる全てのファイルを探し、
・・・省略
クライアントの要求に一番合うものを選びます。
上記だと末尾にスラッシュがないURLを指定した時に、拡張子を付与して探してくれる機能みたいですが
今回の例では、「https://aaa/bbb/」のように末尾にスラッシュがあるURLを指定した時に起こる挙動なので
今回のケースには「MultiViews」は関係ないかもしれないと思い、行き詰まっています。
ルートに設置しているhtaccess
SEOの重複コンテンツ対策でリダイレクトさせてます。
https://lolipop.jp/manual/hp/htaccess-08/
を参考に記述しました。
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://%{HTTP_HOST}/$1 [R=301,L] </IfModule> <FilesMatch ".html$"> AddHandler php7.4-script .html </FilesMatch>
回答1件
あなたの回答
tips
プレビュー