2017-06-19 3 views
0

Ich migriere meinen WordPress-Blog unter blog.example.com auf eine statische Seite unter example.com/articles.htaccess mehrfache Umschreiberegeln

Der Pfad zu den Blog-Artikeln ist immer derselbe (/year/month/day/title.html). Deshalb habe ich diese Rewrite-Regel für blog.example.com:

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

Dies funktioniert gut und alle alten Artikel Urls richtig umgeleitet. Jetzt möchte ich auch einige RSS-Feed-URLs umleiten, so dass ich sie nicht auf allen Planeten, die ich abonniert habe, ändern muss. So dehnte ich meine .htaccess-Datei mit den folgenden Regeln:

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) 

Aber jetzt ist die letzte Regel paßt alles, so „blog.example.com/category/english/feed/“ umgeleitet wird, nicht auf „https://www.example.com/categories/english/index.xml“ aber zu "https://www.example.com/articles/category/english/feed/"

Wenn ich die letzte Regel entfernen, funktioniert die Umleitung der drei RSS-Feeds wie erwartet. Wie kann ich sicherstellen, dass die letzte Regel nicht allen URLs entspricht? Gibt es eine Möglichkeit, htaccess mitzuteilen, die Regeln nacheinander zu probieren und nach dem ersten Spiel zu stoppen? Oder wie könnte ich die letzte Regel so ändern, dass sie nicht mit den RSS-Feed-URLs übereinstimmt?

Antwort

1

Ändern Sie den letzten RewriteRule dazu:

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

Dank ist dies fast perfekt. Einziges verbleibendes Problem, diese Umleitung nun "blog.example.com/category/german/feed" richtig aber nicht "blog.example.com/category/german/feed/". Mit einem Schrägstrich, fällt es zurück auf die URL "" https://www.example.com/articles/category/english/feed/ " –

+0

Hat es funktioniert wie erwartet? –

+0

@ Björn Überprüfen Sie meine bearbeitete Antwort –