RewriteRule ^blog/(.`*)/(.`*)/$ https://www.example.com/404.php [R=301,L]
:
example.com/blog/blog-title
あなたが投稿ディレクティブを使用すると、誤ってリダイレクトされていると言う例のURLをリダイレクトすることができませんでした。したがって、他の指令(おそらく他の.htaccess
ファイル、またはサーバー設定)があるか、既存の指令と競合しているか、キャッシュされた応答が表示されていますか?これまでに301のリダイレクトを試したことがある場合、これらはブラウザによって積極的にキャッシュされています。 (それは302でテストしやすくすることができます - 一時的な - 。このような理由のためにリダイレクト)
あなたは(フロントコントローラを使用しています)ワードプレスを使用しているので、その後任意のリダイレクトは、ファイルの先頭に表示される必要があり、前フロントコントローラ。
また、フォーム/blog/blog-title/garbagetext
の意図したURLに一致するように失敗しますRewriteRule
パターンの終わりに誤ったスラッシュを持っているように見えます。
ここではバッククックは無視されますが、おそらくあなたの質問では単にスタイリングのタイプミスであると思われます。
私はあなたが404ページにをリダイレクトするべきではない私たちの404ページ
に、このようなURLにリダイレクトできるようにする必要があります。代わりに、内部サブリクエストを使用して提供する必要があります。 をにリダイレクトした場合、最初に3xx応答をクライアントに送り返すと、クライアントは404.php
ページの2番目の要求を発行し(URLを公開します)、適切な404 HTTP応答ヘッダーを手動で設定する必要があります。
したがって、適切なErrorDocument
とR=404
を定義する必要があります。
404にリダイレクトする必要がある投稿は、そのスラッシュの後にテキストがある投稿です(例:example.com/blog/customer-reviews/asdfa
)。
あなた.htaccess
ファイルの先頭に、代わりに次の試してみてください。
ErrorDocument 404 /404.php
RewriteRule ^blog/.+/. - [R=404]
これは/blog/customer-reviews/asdfa
と一致しますが、それは/blog/customer-reviews/
(または/blog/customer-reviews
)と一致しませんが。 R=404
フラグは、定義されたエラー文書に対する内部要求をトリガします。 none 3xxコードを使用する場合は、L
フラグは不要です。 テキスト(つまりターゲットURLがない)がない場合は、代わりにハイフン(-
)を指定してください。
ブラウザのキャッシュをクリアしてください。
「実際のブログ投稿」のURLはどのように見えますか?投稿したルールは、 'example.com/blog/blog-title'という形式のURLをリダイレクトするべきではありません。また、既存のディレクティブと競合する可能性があります。ディレクティブの順序が重要なため、 '.htaccess'ファイル全体を投稿してください。正規表現にバッククォートがあるのはなぜですか?正規表現はスラッシュで終わるのですが、サンプルURLがスラッシュで終わっていないのはなぜですか?あなたはwww以外のURLとwwwのURLを切り替えることもできます - これは重要ですか? – MrWhite
実際のブログの記事は、次のようになります。404にリダイレクトする必要がhttps://www.mywebsite.com/blog/customer-reviews/ ポストはこれまでのところ、その末尾のスラッシュ次のテキストを持っている任意の投稿です例: https://www.mywebsite.com/blog/customer-reviews/asdfa 投稿したルールは、両方のURLを404にリダイレクトしていますが、後者をリダイレクトできるルールが必要です。事前のルールはこれが最初のマイナスWordPressの標準規格である、.htaccessファイルではありません。いいえ、非WWWの間にスイッチが偶発だった(すみません!) –