
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 Redirect
Direktive 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 Rewrite
Regeln 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 Rewrite
Regeln 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.