HTTP-Bedingung für Umleitungsregel festlegen

HTTP-Bedingung für Umleitungsregel festlegen

Ich habe eine Umleitungsregel in meinem.htaccessdieser Weiterleitungsagent vonEin.htmlZuB.htmlVerwenden Sie dazu das folgende Muster:

Redirect 301 /A.html http://mysite.com/B.html

Da die RedirectDirektive erfordert, den Zielhost festzulegen, ist es möglich, diese Regel nur auf einem bestimmten Host gelten zu lassen? Ich habe sowohl eine Test- als auch eine Bereitstellungsdomäne und möchte sie nur auf der Bereitstellungsdomäne. Ich kann HTTP-Bedingungen für RewriteRegeln festlegen, aber wie kann ich das für HTTPs tun Redirect?

Antwort1

Ich bin zu der Lösung gekommen, dass es mit reinen Anweisungen nicht geht Redirect. Wenn es nötig ist, Besucher unter bestimmten HTTP-Bedingungen umzuleiten, müssen RewriteRegeln verwendet werden.

Antwort2

Sie können dies tatsächlich tun, aber Sie verlieren dabei den 301-Umleitungscode.

SetEnvIfNoCase Host "myotherdomain.com" redirectthisdomain

<Files "A.html">
   Order Deny,Allow
   Deny from env=redirectthisdomain

   ErrorDocument 403 http://mysite.com/B.html
</Files>

Antwort3

Fügen Sie die Umleitungsregel einfach in die VHost-Konfiguration Ihrer Bereitstellungsdomäne ein. Auf diese Weise ist sie nur für diesen Host aktiv.

Antwort4

Ein kurzes Beispiel: Wenn der Besucher zu dev.example.com/A.html geht, wird er zu B.html weitergeleitet. Wenn er zu www.example.com/A.html geht, wird er zu C.html weitergeleitet; beides mit der 301-Weiterleitung.

RewriteEngine on
RewriteCond %(HTTP_HOST) ^dev.example.com$ [NC]
RewriteCond %(REQUEST_URI) ^/A.html
RewriteRule ^(.*)$ http://dev.exmaple.com/B.html [R=301]

RewriteCond %(HTTP_HOST) !^dev.example.com$ [NC]
RewriteCond %(REQUEST_URI) ^/A.html
RewriteRule ^(.*)$ http://dev.exmaple.com/C.html [R=301]

Lesen Sie mehr überMod_Rewrite bei ApacheWebseite.

verwandte Informationen