私が何を検索しても、なぜこの問題が発生し続けるのか理解できず、何らかの理由でそれがどのように機能するかについての良い説明を見つけることができないようです。また、このクエストが以前に尋ねられたのに申し訳ありませんが、私は2日間答えを探していて、答えを見つけることができません。 (おそらく間違ったキーワードを検索する)
しかし。
現在、Redirect
およびRewriteRule
関数を使用するリダイレクトに関して問題があります。
コンテキストは次のとおりです。
私が働いている会社は最近、サーバーとデザインからウェブサイトを移行および更新しました。もちろん、これはもう利用できないページやリダイレクトが必要なURLがあることを意味します。
最初に問題が発生したのは、すべてのリダイレクトを調べて、一部のリダイレクトが本来あるべきページに移動しないことに気づいたときです。
以下は、問題を与えている.htaccess
ファイルの一部です。行は、私の.htaccess
と同じ順序になっています。
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /nieuws/168/Luchtvaartmaatschappij-delft-onderspit-bij-Hoge-Raad [https domainname]/nieuws
Redirect 301 /nieuws/145/Artikel-Telegraaf-Vertraging [https domainname]/nieuws
Redirect 301 /nieuws/145/Artikel-Telegraaf:-Vertraging.html [https domainname]/nieuws
Redirect 301 /nieuws/108/Wie-gaat-nu-via-(reis)verzekeraars-werken-`Reisagenten-kunnen-klanten-ook-verwijzen` [https domainname]/blog/euclaim-gaat-nu-via-reis-verzekeraars-werken
Redirect 301 /nieuws/136/Technisch-mankement-geen-overmacht.html [https domainname]/blog/technisch-mankement-geen-overmacht
RewriteRule ^nieuws/([1-9]|[1-9][0-9]|[1-9][0-9][0-9]||[1-9][0-9][0-9][0-9])/.*$ /nieuws [R=301,NC,L]
問題は、/nieuws/136/Technisch-mankement-geen-overmacht.html
に移動すると/nieuws
にリダイレクトされることです。
問題
今の問題は、htaccessのどの部分がこれを引き起こしているのかわからないということではなく、これをどうしてどうすれば解決できるかということです。
RewriteRule
はURLを取得して/nieuws
にリダイレクトしますが、どこに配置しても問題ありません。上の例のように、リダイレクトの直後の上部、下部、RewriteRule
を配置しようとしましたが、RewriteRule
が最優先されるのを止めるものは何もありません。
これは通常の動作ですか、ここで何か間違っていますか?
さらに情報が必要な場合はお知らせください。
Redirect
はmod_aliasに属しますが、RewriteRule
はmod_rewriteディレクティブです。 2つの異なるモジュール。異なるモジュールは、リクエスト中に独立して異なる時間に実行されます。
カスタマイズされたApacheサーバーがない場合、Apache構成ファイル内のディレクティブの順序(例:.htaccess
)にもかかわらず、mod_rewriteは常にbefore mod_aliasを実行します。
一般に、リダイレクト(および/またはURL書き換え)にmod_rewriteを使用している場合、そのような競合を避けるために、すべてのリダイレクトにmod_rewriteを使用する必要があります。
301がブラウザによってハードにキャッシュされるため、テストの前に中間キャッシュがクリアされていることを確認する必要があることに注意してください。
Redirect 301 /nieuws/168/Luchtvaartmaatschappij-delft-onderspit-bij-Hoge-Raad [https domainname]/nieuws
例として、Redirect
はプレフィックス一致であるため、同等のRewriteRule
ディレクティブは次のようになります。
RewriteRule ^nieuws/168/Luchtvaartmaatschappij-delft-onderspit-bij-Hoge-Raad(.*) https://example.com/nieuws$1 [R=301,L]
ただし、これが完全に一致することを意図している場合:
RewriteRule ^nieuws/168/Luchtvaartmaatschappij-delft-onderspit-bij-Hoge-Raad$ https://example.com/nieuws [R=301,L]