Theo24: htaccess Weiterleitung von encodedter url

Hallo!

Auf meinem Server möchte ich eine interne Weiterleitung einrichten und zwar wie folgt.

subdomain.meineseite.de/url/http%3A%2F%2Faol.com

soll weiterleiten auf:

meineseite.de/redirect/true/url/http%3A%2F%2Faol.com

Dazu verwende ich die .htaccess

RewriteCond %{HTTP_HOST} ^(.+).meineseite.de$ [NC]
     RewriteRule ^.*$ http://meineseite.de/redirect/true%{REQUEST_URI}

Die urlencoded URLs funktionieren sowieso nur, wenn AllowEncodedSlashes True ist. Das habe ich bereits eingestellt.

Allerdings tritt hier das Problem auf, dass bei der Weiterleitung in der .htaccess die urlencodedten Zeichen %3A%2F%2F in %{REQUEST_URI} umgeschrieben werden in ://
Dadurch geht der GET-Parameter kaputt und das ganze funktioniert nicht mehr.

Weiß jemand, wie ich das Problem umgehen kann?

Vielen Dank im Voraus

  1. Hi,

    Auf meinem Server möchte ich eine interne Weiterleitung einrichten und zwar wie folgt.

    subdomain.meineseite.de/url/http%3A%2F%2Faol.com

    soll weiterleiten auf:

    meineseite.de/redirect/true/url/http%3A%2F%2Faol.com

    Dazu verwende ich die .htaccess

    RewriteCond %{HTTP_HOST} ^(.+).meineseite.de$ [NC]
         RewriteRule ^.*$ http://meineseite.de/redirect/true%{REQUEST_URI}

    Das ist aber eine externe Weiterleitung, weil du einen HTTP-URL als Ziel angibst.

    Allerdings tritt hier das Problem auf, dass bei der Weiterleitung in der .htaccess die urlencodedten Zeichen %3A%2F%2F in %{REQUEST_URI} umgeschrieben werden in ://
    Dadurch geht der GET-Parameter kaputt und das ganze funktioniert nicht mehr.

    Weiß jemand, wie ich das Problem umgehen kann?

    RewriteRule [flags]:
    “'B' (escape backreferences)
    Apache has to unescape URLs before mapping them, so backreferences will be unescaped at the time they are applied. Using the B flag, non-alphanumeric characters in backreferences will be escaped.”

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Das ist aber eine externe Weiterleitung, weil du einen HTTP-URL als Ziel angibst.

      Stimmt.

      RewriteRule [flags]:
      “'B' (escape backreferences)
      Apache has to unescape URLs before mapping them, so backreferences will be unescaped at the time they are applied. Using the B flag, non-alphanumeric characters in backreferences will be escaped.”

      Hab ich probiert - hört sich auch genau nach dem an, was ich brauche. Allerdings scheint es mit %{REQUEST_URI} nicht zu funktionieren (geht das vllt. nur bei backreferences à la $1 ?)...
      Meine .htaccess sieht jetzt so aus:

      RewriteCond %{HTTP_HOST} ^(.+).meineseite.de$ [NC]
           RewriteRule ^.*$ http://meineseite.de/redirect/true%{REQUEST_URI} [B,L,R=301]

      1. Hi,

        Hab ich probiert - hört sich auch genau nach dem an, was ich brauche. Allerdings scheint es mit %{REQUEST_URI} nicht zu funktionieren (geht das vllt. nur bei backreferences à la $1 ?)...

        Das zitierte bezieht sich zumindest eindeutig auf Backreferences.

        Hast du's denn mal mit einer solchen statt dem Request-URI probiert?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. So funktioniert's :)

          RewriteCond %{HTTP_HOST} ^(.+).meineseite.de$ [NC]
               RewriteCond %{REQUEST_URI} ^/url/(.+)$
               RewriteRule ^.*$ http://meineseite.de/redirect/true/url/%1 [B,L,R=301]

          Kleiner Hinweis (hat mich viel Zeit gekostet): Der Apache fasst mehreren Slashes zu einem zusammen, deshalb funktioniert das hier nicht:

          RewriteCond %{HTTP_HOST} ^(.+).meineseite.de$ [NC]
               RewriteRule ^url/(.+)$ http://meineseite.de/redirect/true/url/$1 [B,L,R=301]

          Danke ChrisB!

          Hi,

          Hab ich probiert - hört sich auch genau nach dem an, was ich brauche. Allerdings scheint es mit %{REQUEST_URI} nicht zu funktionieren (geht das vllt. nur bei backreferences à la $1 ?)...

          Das zitierte bezieht sich zumindest eindeutig auf Backreferences.

          Hast du's denn mal mit einer solchen statt dem Request-URI probiert?

          MfG ChrisB