2017-06-14 10 views
1

は、リダイレクトルールの作成に取り組んでいますが、私はあまりよく知られていません。URLにサブドメインがあるブログ投稿用のRewriteRule

基本的に私は次のようになりWordpressのURLを持っている:

https://example.com/blog/blog-title/garbagetext 

を私たちの404ページに、このようなURLにリダイレクトできるようにする必要があり、私の最初の試みはしていました:

RewriteRule ^blog/(.`*)/(.`*)/$ https://www.example.com/404.php [R=301,L] 

これはうまくいきましたが、実際のブログ投稿にアクセスすることも不可能になりました。また、次のようなURLをリダイレクトしています:

example.com/blog/blog-title 

これを正しく行うにはどうすればよいですか?

+0

「実際のブログ投稿」のURLはどのように見えますか?投稿したルールは、 'example.com/blog/blog-title'という形式のURLをリダイレクトするべきではありません。また、既存のディレクティブと競合する可能性があります。ディレクティブの順序が重要なため、 '.htaccess'ファイル全体を投稿してください。正規表現にバッククォートがあるのはなぜですか?正規表現はスラッシュで終わるのですが、サンプルURLがスラッシュで終わっていないのはなぜですか?あなたはwww以外のURLとwwwのURLを切り替えることもできます - これは重要ですか? – MrWhite

+0

実際のブログの記事は、次のようになります。404にリダイレクトする必要がhttps://www.mywebsite.com/blog/customer-reviews/ ポストはこれまでのところ、その末尾のスラッシュ次のテキストを持っている任意の投稿です例: https://www.mywebsite.com/blog/customer-reviews/asdfa 投稿したルールは、両方のURLを404にリダイレクトしていますが、後者をリダイレクトできるルールが必要です。事前のルールはこれが最初のマイナスWordPressの標準規格である、.htaccessファイルではありません。いいえ、非WWWの間にスイッチが偶発だった(すみません!) –

答えて

0
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応答ヘッダーを手動で設定する必要があります。

したがって、適切なErrorDocumentR=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がない)がない場合は、代わりにハイフン(-)を指定してください。

ブラウザのキャッシュをクリアしてください。

関連する問題