すべてのエラーに対してカスタムエラーページを使用したいので、エラーページでビルドされたサーバーがビジターに表示されることはありません。しかし、私は克服できない不具合を発見したようです。htaccessが動作していません。入力したURLにスラッシュスペースが含まれていると、失敗します。 "site.com/ /"
問題は、訪問者が2つのスラッシュの間だけにスペースを入れてURLをミスした場合、私の環境は自分のルートフォルダのhtaccessファイルを完全に無視して、ユーザーを組み込みのエラーページに送ります。
開発環境は、それは私が今、このhtaccessのファイルを使用していたルートだと、問題を単純化するためのApacheなどの最新のPHP &
でWindows 10上でXAMPPです。
ErrorDocument 404 /statuspage.php
RewriteEngine On
RewriteRule^http://example.com [R=302,L]
上記のコードでは、すべてのURLをexample.comにリダイレクトする必要があります。それが見つからないページで失敗する場合、少なくとも私のエラーページにリダイレクトする必要があります。
しかし、次のURLのいずれかを入力すると、私のプロジェクト全体がHTACCESSファイルを含めて無視され、XAMPP自身の404エラーページがスローされます。
1)www.mysite.com//
2)www.mysite.com/
3)www.mysite.com/dir/%20/subdir/file /file.php。 html
Apacheはスペースを%20で置き換えます。私のリダイレクトを無視します。それ自身の404ページを表示します。
私は、このエラーはちょうどうまくリダイレクトされることに注意してください。
1)www.mysite.com/ file.php/ 2)www.mysite.com/dir/ X/file.html
私はこのエラーは一般的ではない実現します。しかし、それが起こる可能性があり、私は何が起こっているのか、それをやめる方法を理解するのに苦労しています。
IMHOあなたは、ApacheルータではなくあなたのURLルータにロジックを移すことができます。これにより、他のプラットフォームにもコードをデプロイできます。 –
私はそのようなことがどれほど無知であるかを説明できなかったでしょう。私はあなたがURLルータによって何を意味するか分かりません。あなたはhttpd.confやその他の設定ファイルについて話していますか?私の懸念があるなら、私はいくつかのホスティング環境でそのファイルにアクセスできないかもしれないということです。それがあなたの意図したものでないなら、私はそれをよりよく理解したいと思います。ありがとう。 –
Hmm。あなたはApacheの設定をそのままにして、PHPで大文字小文字を扱います。通常は、パスを考慮したファイルがあります。何かが好きです:* pathが "/ something"の場合、function_something()*を呼び出します。 [ここに](http://stackoverflow.com/questions/125677/php-application-url-routing)いくつかの情報は、あなたを開始する。 –