2017-06-19 14 views
0

blog.example.comにあるwordpress blogをexample.com/articlesにある静的ページに移行します。htaccess複数の書き換えルール

ブログ記事へのパスは常に同じです(/year/month/day/title.html)。

RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/articles/$1 [R=301,L] 

これは素晴らしい作品とすべての古い記事のURLが正しくリダイレ​​クトされます。したがって、私はblog.example.comため、この書き換えルールを作成しました。今では、いくつかのRSSフィードURLをリダイレクトして、私が購読しているすべての惑星でそれらを変更する必要はありません。だから私は、次のルールと私の.htaccessファイル拡張:

RedirectMatch 301 ^/category/english/feed https://www\.example\.com/categories/english/index\.xml 
RedirectMatch 301 ^/category/deutsch/feed https://www\.example\.com/categories/deutsch/index\.xml 
RedirectMatch 301 ^/tag/dev/feed https://www\.example\.com/tags/dev/index\.xml 

RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/articles/$1 [R=301,L] 
.htaccess lines 1-8/8 (END) 

をしかし、今最後のルールは、すべてのものと一致したので、「blog.example.com/category/english/feed/」が「https://www.example.com/categories/english/index.xml」にリダイレクトされていませんが、 "https://www.example.com/articles/category/english/feed/"

最後のルールを削除すると、3つのrssフィードのリダイレクトが期待通りに機能します。最後のルールがすべてのURLと一致しないことを確認するにはどうすればよいですか? htaccessにルールを1つずつ試して最初の試合後に停止するように指示する方法はありますか?または、どのようにしてrss-feed URLと一致しないように最後のルールを変更できますか?

答えて

1

変更これまでの最後のRewriteRule:

RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC] 
RewriteCond %{REQUEST_URI} !feed/?$ 
RewriteRule ^(.*)$ https://www.example.com/articles/$1 [R=301,L] 
+0

おかげで、これはほぼ完璧です。残りの唯一の問題ですが、これは "blog.example.com/category/english/feed/"ではなく "blog.example.com/category/english/feed"に正しくリダイレ​​クトされます。末尾にスラッシュをつけると、 "" https://www.example.com/articles/category/english/feed/ " –

+0

期待どおりに動作しましたか? –

+0

@Björn私の編集した回答を確認してください –

関連する問題