2017-02-21 6 views
0

次の結果が得られる.htaccessのルールはどのように追加できますか?htaccessサブディレクトリを上位レベルにリダイレクト

domain.net/catalog/file/ 

のURLで

含む任意のサブフォルダ "/製造業者に/ 任意シンボル" は単に、例えば、上位レベルに書き換え

domain.net/catalog/file/manufacturer/?categorylayout=0&showcategory=1&showproducts=1&productsublayout=0 

htaccessの

RedirectMatch 301 ^/manufacturer//

仕事はありません。 URLの終わりからGETパラメータを削除する必要があり、QSD-flagは500のエラーを引き起こします。

答えて

1

私は、これはあなたが探しているものだと思う:

RewriteEngine on 
RewriteRule ^/?(.+)/manufacturer/ /$1/ [R=301,QSD] 

書き換えモジュールがロードされている場合、これはhttpサーバホストコンフィギュレーションまたは動的コンフィギュレーションファイル内(.htaccess)で動作します。

動的構成ファイルの解釈は、このような使用を決定した場合に有効にする必要があります。この場合、ファイルはhttpサーバのDocumentRootフォルダに置かれます。


あなたの説明は細部に自分自身を矛盾:(GETパラメータがないみなさ一部であることに注意してください説明で、あなたは「/メーカー/任意のシンボル」と言うが、例としては、このようなシンボルなしでURLを示していのURL)。したがって、上記のルールは...あなたの正確な要件が何であるかに応じて、わずかに変更する


と一般的なヒントがあるかもしれません:あなたは常にダイナミック使用するのではなく、HTTPサーバのホスト設定内のこのようなルールを置くことを好む必要があります構成ファイル( ".htaccess")。これらのファイルは悪名高いエラーが発生しやすく、デバッグが難しく、サーバーの速度が遅くなります。彼らは、あなたがホスト構成(本当に安いホスティングサービスプロバイダを読む)を持っていないか、独自の書き換えルールを書くことに頼っているアプリケーションを持っている場合にのみ、最後のオプションとして提供されます(これは明白なセキュリティの悪夢です)。

+0

QSDフラグは500のサーバーエラーを引き起こします。 RewriteRule^/?(製造元//$ 1/[R = 301、L]) - クエリの文字列を残してください(( –

+0

@ YuryZheve QSAはデフォルト(AFAIK)なので、外部リダイレクトのLフラグとQSDはGETパラメータを削除する必要があります。このフラグは文書化されており、システムでエラーが発生する理由はわかりません。 – arkascha

+0

https:// httpd .apache.org/docs/trunk/rewrite/flags.html#flag_qsd – arkascha

関連する問題