Verwenden von mod_rewrite zum Umleiten einzelner Seiten

Verwenden von mod_rewrite zum Umleiten einzelner Seiten

http://www.old-domain.orgDie erste Anforderung bestand darin, den Datenverkehr von nach umzuleiten https://example.press– dies jedoch nur für die Stammdomäne zu tun; jede spezifische Seite sollte auf der alten Domäne verfügbar sein.

Also habe ich ein wenig recherchiert und das hier hat geholfen:

RedirectMatch "^/$" "https://example.press"

(interessanterweisehttps://htaccess.madewithlove.be/behauptete, es funktioniert nicht ...)

Dann kam die nächste Anfrage: Leiten Sie auch eine andere URL um, und zwar in der Form:

http://www.old-domain.example/site/index.php?act=news

, aber so, dass bei der Anforderung einer bestimmten Nachricht keine Weiterleitung erfolgt (z. B. http://www.old-domain.org/site/index.php?act=news&id=12345)

Dies erwies sich als sehr anspruchsvoll. In vielen Dokumenten und Artikeln wurde erwähnt, dass dies mit Redirect/ RedirectMatch-Direktiven nicht möglich ist, mit RewriteCond+ jedoch schon RewriteRule. Ich habe mir gedacht, dass dies ungefähr so ​​aussehen sollte:

<IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteCond %{QUERY_STRING} act=news
          RewriteRule ^(.*)$ https://example.press [R=302,L]
</IfModule>

(wieder,https://htaccess.madewithlove.be/behauptet, es funktioniert)

Allerdings scheint nichts zu funktionieren. Es finden keine Weiterleitungen statt. Irgendwelche offensichtlichen Missverständnisse meinerseits, oder?

Antwort1

Ich glaube, das wird funktionieren:

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} act=news RewriteCond %{QUERY_STRING} !act=news&id=12345 RewriteRule ^(.*)$ https://example.press/ [R=302,L] RewriteRule ^/$ https://example.press/ [R=302,L] </IfModule>

Es gibt zwei Regeln, und die erste Regel hat zwei Bedingungen. Die zweite Bedingung der ersten Regel verwendet den !Operator, um die Übereinstimmung zu negieren act=news&id=12345. Zwischen den Bedingungen der ersten Regel gibt es ein implizites „UND“, daher müssen beide erfüllt sein.

Die zweite Regel trifft dann /nur auf die Seite zu, ohne Bedingungen.

verwandte Informationen