ユーザー(またはボット)が存在しないページでリクエストした場合、検索結果にリダイレクトしたいと思います。私は次のようなものを使用して.htaccess
ファイルでそれを行うことを好む:
ErrorDocument 404 /recherche?search_query=${REQUEST_URI}
ただし、失敗します。 Webブラウザーはrecherche?search_query=${REQUEST_URI}
、$ {REQUEST_URI}のURLにリダイレクトされ、置き換えられません。ここで読むことができます。
変数置換はErrorDocument
ディレクティブでは機能しません-変更なしでそのままURLを渡します(そのような置換を実行する特別なモジュールがあるかもしれません-私は知りません)。
ErrorDocument
ディレクティブを使用する場合は、スクリプト自体で最初に要求されたURLを取得する必要があります(PHPの$_SERVER['REQUEST_URI']
など)。 404ハンドラーにそのようなルックアップを実行するよう指示する特別なパラメーターを渡すことができます。 ErrorDocument 404 /recherche?special-search=yes
。
別のアプローチは、mod_rewriteを使用することで、そのような置換が可能な場合です。例えば:
Options +FollowSymLinks
RewriteEngine On
# redirect all requests to non-existing resources to special handler
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /recherche?search_query=%{REQUEST_URI} [L,R=404]
すでにmod_rewriteを使用している場合は、他のルールと競合しないように、ルールリストの最後のどこかにそのようなルールを配置する必要があります。