.htaccess を使用して 6 桁の数字の URL をスクリプトに送信し、その他の無効な URL をすべて 404 として処理することは可能ですか?
質問
.htaccess を使用して 6 桁の URL をすべてスクリプトに送信して処理し、その他の無効な URL をすべてエラー 404 として処理することは可能ですか?
例えば:
http://mywebsite.com/132483
に送信されます:
http://mywebsite.com/scriptname.php?no=132483
しかし
http://mywebsite.com/132483a or
http://mywebsite.com/asdf
404 エラーとして処理されます。
現在、カスタム PHP 404 スクリプトを使用してこれを動作させていますが、ちょっとぎこちないです。.htaccess の方がより洗練されたソリューションであるように私には思えますが、それが可能かどうかはまだわかりません。
解決
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([0-9]{6})$ scriptname.php?no=$1 [L]
</IfModule>
クリーンな URL を保存するには
http://mywebsite.com/132483
scriptname.php を提供するときは [L] のみを使用します。[R=301] を使用すると、scriptname.php?no=xxx にリダイレクトされます。
これは役に立つかもしれません http://www.addedbytes.com/download/mod_rewrite-cheat-sheet-v2/pdf/
他のヒント
htaccess ファイルに次の内容を記述します。
RewriteEngine On
RewriteRule ^([0-9]{6})$ /scriptname.php?no=$1 [L]
最初の行は mod_rewrite エンジンをオンにします。() 括弧は内容を $1 に入れます。連続する () には $2、$3... が入ります。等々。[0-9]{6} は、0 ~ 9 の文字のみを含む正確に 6 文字の長さの文字列を検索することを示します。
末尾の [L] により、これが最後のルールになります。適用される場合、ルールの処理は停止します。
^ と $ は、受信 URI の開始と終了をマークします。
お役に立てば幸いです!
はい、mod_rewrite を使用すると可能です。オンラインには優れた mod_rewrite チュートリアルがたくさんあります。Google で検索するとすぐに答えが見つかるはずです。
基本的に、使用する正規表現が数字のみを検索し、他の文字を検索しないこと、および長さが 6 であることを確認する必要があります。次に、取得した番号を使用して scriptname.?no= にリダイレクトします。
お役に立てれば!