• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

RewriteRule

Marco812

Newbie
Hi,

wie kann ich alle https anfragen für ICS-Dateien auf webcal umleiten?

Ich habe es mit:

Code:
RewriteRule ^(.ics) webcal//%{SERVER_NAME}/$1 [R,L]
versucht, was nicht funktioniert hat.

Wer kann mir sagen, wie das funktioniert?
 

gameboy

Hacker
Hallo Marco812,

versuch mal folgendes:

Code:
RewriteRule ^(.*\.ics) webcal://%{SERVER_NAME}$1 [R,L]
Viele Grüße,
gameboy.
 
OP
M

Marco812

Newbie
Leider funktioniert es mit deinem Vorschlag auch nicht ober brauche ich noch irgend einen RewriteCond dazu?

Gruß

Marco
 

gameboy

Hacker
Gib doch mal konkrete Beispiele:

1) Für URLs, die umgeschrieben werden sollen

2) für die zugehörigen, umgeschriebenen URLs
 
OP
M

Marco812

Newbie
OP
M

Marco812

Newbie
Leider habe ich immer noch keine Lösung gefunden. In anderen Foren habe ich auf diese Frage auch keine Antwort erhalten. Deshalb jetzt meine Frage an die Experten, da ich das Problem vielleicht nicht richtig einschätzen kann. Gibt es evtl. eine alternative zu meinem Problem wie man das ganze besser lösen kann oder sind RewriteRule's so kompliziert das kaum jemand damit umgehen kann?
 

marce

Guru
ohne es ausprobiert zu haben - aber das sieht eher nach einer Lösung für redirect aus anstatt rewrite...
 
OP
M

Marco812

Newbie
Also ich habe es unter anderem auch mit folgender Regel versucht:
Code:
RewriteCond %{THE_REQUEST} (.*)\.ics [NC]
RewriteRule ^(.*)\.ics webcal://%{SERVER_NAME}$1 [R,L]

und auch mit einem Redirect:
Code:
Redirect ^(.*)\.ics webcal://%{SERVER_NAME}/$1 [R,L]

ansonsten habe ich noch unzählige sinnige und unsinnige Varianten versucht, die aber alle nicht funktioniert haben. Kann es sein das eine Weiterleitung an webcal nicht möglich ist oder ist die Regel tatsächlich nicht richtig?
 

marce

Guru
webcal habe ich noch nie verwendet - meist nur umschreiben von http auf https oder umgekehrt. Die Direktiven sehen soweit eigentlich stimmig aus.

Aktiviere doch mal ein Rewritelog - alternativ versuche nicht mit dem Browser auf die Seite zuzugreifen sondern mit curl oder wget und lass Dir auch die Response-Header ausgeben. Dann siehst Du auf jeden Fall mal im Wortlaut, was da nun als Antwort zum Client zurück kommt.

Was bekommst Du denn als konkrete Fehlermeldung angezeigt?
 
OP
M

Marco812

Newbie
webcal habe ich noch nie verwendet - meist nur umschreiben von http auf https oder umgekehrt. Die Direktiven sehen soweit eigentlich stimmig aus.
Also von http schreibe ich um auf https, was soweit auch ganz gut funktioniert. Nun müchte ich aber zusätzlich von https auf webcal umschreiben, wenn es sich um eine *.ics Datei handelt.

Aktiviere doch mal ein Rewritelog - alternativ versuche nicht mit dem Browser auf die Seite zuzugreifen sondern mit curl oder wget und lass Dir auch die Response-Header ausgeben. Dann siehst Du auf jeden Fall mal im Wortlaut, was da nun als Antwort zum Client zurück kommt.
Wie kann ich mir denn mit wget den Response-Header ausgeben lassen oder das Rewritelog aktivieren?

Was bekommst Du denn als konkrete Fehlermeldung angezeigt?
Also im Browser bekomme ich keine fehlermeldung. Das Problem ist nur wenn ich auf die *.ics Datei über http zugreife, dann wird der Kalender nur heruntergeladen und wenn ich über webcal auf den Kalender zugreife, wird dieser im E-Mail-Client verknüpft. Manuel funktioniert das auch so, nur für die Benutzer ist das recht scher zu verstehen und auch umständlich, deshalb möchte ich bei den *.ics Dateien die URL umschreichen.
 
OP
M

Marco812

Newbie
Meine .htaccess sieht jetzt wie folgt aus:
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/download
RewriteCond %{REQUEST_FILENAME} !/calendars
RewriteCond %{THE_REQUEST} (.*)\.ics [NC]
RewriteCond %{HTTPS} !=on

RewriteRule ^(.*\.ics) webcal://%{SERVER_NAME}$1 [R,L]
RewriteRule ^(.*) https://%{SERVER_NAME}:8443/$1 [R,L]

Das Rewritelog (RewriteLogLevel 9) gibt mir folgendes aus, wenn ich auf die Domain zugreife:
Code:
123.123.123.123 - - [22/Aug/2008:10:12:51 +0200] [www.mydomain.de/sid#8134e80][rid#81bf050/initial] (3) [perdir /home/www/page_xyz/] strip per-dir prefix: /home/www/page_xyz/ -> 
123.123.123.123 - - [22/Aug/2008:10:12:51 +0200] [www.mydomain.de/sid#8134e80][rid#81bf050/initial] (3) [perdir /home/www/page_xyz/] applying pattern '^(.*\.ics)' to uri ''
123.123.123.123 - - [22/Aug/2008:10:12:51 +0200] [www.mydomain.de/sid#8134e80][rid#81bf050/initial] (3) [perdir /home/www/page_xyz/] strip per-dir prefix: /home/www/page_xyz/ -> 
123.123.123.123 - - [22/Aug/2008:10:12:51 +0200] [www.mydomain.de/sid#8134e80][rid#81bf050/initial] (3) [perdir /home/www/page_xyz/] applying pattern '^(.*)' to uri ''
123.123.123.123 - - [22/Aug/2008:10:12:51 +0200] [www.mydomain.de/sid#8134e80][rid#81bf050/initial] (2) [perdir /home/www/page_xyz/] rewrite '' -> 'https://www.mydomain.de:8443/'
123.123.123.123 - - [22/Aug/2008:10:12:51 +0200] [www.mydomain.de/sid#8134e80][rid#81bf050/initial] (2) [perdir /home/www/page_xyz/] explicitly forcing redirect with https://www.mydomain.de:8443/
123.123.123.123 - - [22/Aug/2008:10:12:51 +0200] [www.mydomain.de/sid#8134e80][rid#81bf050/initial] (1) [perdir /home/www/page_xyz/] escaping https://www.mydomain.de:8443/ for redirect
123.123.123.123 - - [22/Aug/2008:10:12:51 +0200] [www.mydomain.de/sid#8134e80][rid#81bf050/initial] (1) [perdir /home/www/page_xyz/] redirect to https://www.mydomain.de:8443/ [REDIRECT/302]

Wenn ich jedoch auf den entsprechenden Link (https://www.mydomain.de:8443/icalsrv.php/user_x/freebusy.ics) zur ICS-Datei klicke bzw. direkt im Webbrowser eingebe, wird nichts in mein Rewritelog geschrieben. Der entsprechende Response-Header dazu sieht so aus:
Code:
https://www.mydomain.de/icalsrv.php/user_x/freebusy.ics

GET /icalsrv.php/user_x/freebusy.ics HTTP/1.1
Host: www.mydomain.de
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: https://www.mydomain.de/icalsrv.php/user_x/list.html
Cookie: last_domain=default; last_loginid=user_x
If-Modified-Since: Fri, 22 Aug 2008 08:12:08 GMT
If-None-Match: 0
Authorization: Basic bS5uaWNrb2xhaTpFZ3dMb2dpbg==

HTTP/1.x 304 Not Modified
Date: Fri, 22 Aug 2008 08:31:20 GMT
Server: Apache/2.2.4 (FreeBSD) mod_ssl/2.2.4 OpenSSL/0.9.7i DAV/2 PHP/5.2.0 with Suhosin-Patch
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Set-Cookie: sessionid=deleted; expires=Thu, 23-Aug-2007 08:31:19 GMT; path=/; domain=www.mydomain.de
Set-Cookie: sessionid=982s82uvmv87052dotk169t751; path=/; domain=www.mydomain.de
Set-Cookie: sessionid=982s82uvmv87052dotk169t751; path=/; domain=www.mydomain.de
Set-Cookie: kp3=7f4ff9e4c8e40f64af10e93be7a3b66e; path=/; domain=www.mydomain.de
Set-Cookie: domain=default; path=/; domain=www.mydomain.de
Set-Cookie: last_loginid=user_x; expires=Fri, 05-Sep-2008 08:31:20 GMT; path=/; domain=www.mydomain.de
Set-Cookie: last_domain=default; expires=Fri, 05-Sep-2008 08:31:20 GMT; path=/; domain=www.mydomain.de

Es wäre nett, wenn ein Profi sich mal die entsprechenden Ausgaben anschauen könnte, mir evtl. einen Tipp geben könnte was der Fehler ist und wie meine .htaccess aussehen muss, damit es funktioniert.
 

marce

Guru
Marco812 schrieb:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/download
RewriteCond %{REQUEST_FILENAME} !/calendars
RewriteCond %{THE_REQUEST} (.*)\.ics [NC]
RewriteCond %{HTTPS} !=on

RewriteRule ^(.*\.ics) webcal://%{SERVER_NAME}$1 [R,L]
RewriteRule ^(.*) https://%{SERVER_NAME}:8443/$1 [R,L]
mit der Syntax kommt die rewrite-rule für *.ics nie zu tragen, wenn Du https:// in der URI verwendest...
 
OP
M

Marco812

Newbie
marce schrieb:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/download
RewriteCond %{REQUEST_FILENAME} !/calendars
RewriteCond %{THE_REQUEST} (.*)\.ics [NC]
RewriteCond %{HTTPS} !=on

RewriteRule ^(.*\.ics) webcal://%{SERVER_NAME}$1 [R,L]
RewriteRule ^(.*) https://%{SERVER_NAME}:8443/$1 [R,L]
mit der Syntax kommt die rewrite-rule für *.ics nie zu tragen, wenn Du https:// in der URI verwendest...

Auch wenn ich den RewriteCond bzw. die RewriteRule vertausch erziele ich nicht das gewünschte Ergebnis, warum?
 

marce

Guru
was meinst Du mit "vertauschen"? Wie sieht die Config dann konkret aus?

Bitte immer Fakten liefern, "Rate mal mit Rosenthal" war mal...
 
OP
M

Marco812

Newbie
marce schrieb:
was meinst Du mit "vertauschen"? Wie sieht die Config dann konkret aus?

Bitte immer Fakten liefern, "Rate mal mit Rosenthal" war mal...

OK, ich gelobe Besserung und veranstalte keine Ratespielchen mehr, ich bin ja froh das mir jemand Hilft.

Die .htaccess nach versuch eins:
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/download
RewriteCond %{REQUEST_FILENAME} !/calendars
RewriteCond %{HTTPS} !=on
RewriteCond %{THE_REQUEST} (.*)\.ics [NC]

RewriteRule ^(.*\.ics) webcal://%{SERVER_NAME}$1 [R,L]
RewriteRule ^(.*) https://%{SERVER_NAME}:8443/$1 [R,L]
und der dazugehörige Response-Header:
Code:
https://www.mydomain.de:8443/icalsrv.php/user_x/freebusy.ics

GET /icalsrv.php/user_x/freebusy.ics HTTP/1.1
Host: www.mydomain.de:8443
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: https://www.mydomain.de:8443/icalsrv.php/user_x/list.html
Cookie: last_domain=default; last_loginid=user_x; sessionid=i7gairnp5ttougd63uee98u4m0; kp3=985f14ecd381f9e90fc7a70731884129; 

domain=default
Authorization: Basic bS5uaWNrb2xhaTpFZ3dMb2dpbg==

HTTP/1.x 200 OK
Date: Fri, 22 Aug 2008 11:31:45 GMT
Server: Apache/2.2.4 (FreeBSD) mod_ssl/2.2.4 OpenSSL/0.9.7i DAV/2 PHP/5.2.0 with Suhosin-Patch
X-Powered-By: PHP/5.2.0
Cache-Control: pre-check=0, post-check=0, max-age=0
Pragma: no-cache
Set-Cookie: sessionid=i7gairnp5ttougd63uee98u4m0; path=/; domain=www.mydomain.de
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Etag: 0
Last-Modified: Fri, 22 Aug 2008 11:31:46 GMT
Content-Length: 120
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/calendar

Bei versuch zwei sah die .htaccess so aus:
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/download
RewriteCond %{REQUEST_FILENAME} !/calendars
RewriteCond %{THE_REQUEST} (.*)\.ics [NC]
RewriteCond %{HTTPS} !=on

RewriteRule ^(.*) https://%{SERVER_NAME}:8443/$1 [R,L]
RewriteRule ^(.*\.ics) webcal://%{SERVER_NAME}$1 [R,L]
und der dazugehörige Response-Header:
Code:
https://www.mydomain.de:8443/icalsrv.php/user_x/freebusy.ics

GET /icalsrv.php/user_x/freebusy.ics HTTP/1.1
Host: www.mydomain.de:8443
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: https://www.mydomain.de:8443/icalsrv.php/user_x/list.html
Cookie: last_domain=default; last_loginid=user_x; sessionid=i7gairnp5ttougd63uee98u4m0; kp3=985f14ecd381f9e90fc7a70731884129; domain=default
If-Modified-Since: Fri, 22 Aug 2008 11:31:46 GMT
If-None-Match: 0
Authorization: Basic bS5uaWNrb2xhaTpFZ3dMb2dpbg==

HTTP/1.x 304 Not Modified
Date: Fri, 22 Aug 2008 11:37:15 GMT
Server: Apache/2.2.4 (FreeBSD) mod_ssl/2.2.4 OpenSSL/0.9.7i DAV/2 PHP/5.2.0 with Suhosin-Patch
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Set-Cookie: sessionid=i7gairnp5ttougd63uee98u4m0; path=/; domain=www.mydomain.de

Leider wurden in beiden Fällen kein Eintrag im Rewritelog gemacht. Ich hoffe für weitere Hilfe sind die Informationen ausreichend.
 

marce

Guru
Logisch wurde das nicht verarbeitet. Da Du mit https aufrufst - aber RewriteCond %{HTTPS} !=on gesetzt hast.
 
OP
M

Marco812

Newbie
marce schrieb:
Logisch wurde das nicht verarbeitet. Da Du mit https aufrufst - aber RewriteCond %{HTTPS} !=on gesetzt hast.

Das ist ja soweit auch richtig, der Benutzer soll ja von http auf https umgeleitet werden. Auf einer entsprechenden Seite steht dann der Link zur ICS-Datei und wenn der Link angeklickt wird soll von https auf webcal weitergeleitet werden. Wie kann ich das jetzt machen, wenn der RewriteCond %{HTTPS} !=on nicht gesetzt werden darf?
 

marce

Guru
die ics-rewrite-cond auslagern und entsprechend vorher durchlaufen lassen? Oder einen entsprechend konfigurierten Block danach einfügen?

So schwer sollte der Gedankengang doch nicht sein - vor allem, wenn man die Doku bei Apache aufmerksam gelesen hat und sich das hübsche Bildchen genau angesehen hast...
 
OP
M

Marco812

Newbie
marce schrieb:
die ics-rewrite-cond auslagern und entsprechend vorher durchlaufen lassen? Oder einen entsprechend konfigurierten Block danach einfügen?

Einen entsprechend konfigurierten Block in meiner .htaccess hätte ich schon gerne und habe es so versucht:
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/download
RewriteCond %{REQUEST_FILENAME} !/calendars

RewriteCond %{THE_REQUEST} (.*)\.ics [NC]
RewriteRule ^(.*\.ics) webcal://%{SERVER_NAME}$1 [R,L]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}:8443/$1 [R]

Das Ergebnis im meinem Rewritelog war:
Code:
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (3) [perdir /home/www/page_xyz/] add path info postfix: /home/www/page_xyz/icalsrv.php -> /home/www/page_xyz/icalsrv.php/user_x/list.html
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (3) [perdir /home/www/page_xyz/] strip per-dir prefix: /home/www/page_xyz/icalsrv.php/user_x/list.html -> icalsrv.php/user_x/list.html
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (3) [perdir /home/www/page_xyz/] applying pattern '^(.*)\.ics' to uri 'icalsrv.php/user_x/list.html'
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (3) [perdir /home/www/page_xyz/] add path info postfix: /home/www/page_xyz/icalsrv.php -> /home/www/page_xyz/icalsrv.php/user_x/list.html
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (3) [perdir /home/www/page_xyz/] strip per-dir prefix: /home/www/page_xyz/icalsrv.php/user_x/list.html -> icalsrv.php/user_x/list.html
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (3) [perdir /home/www/page_xyz/] applying pattern '^(.*)' to uri 'icalsrv.php/user_x/list.html'
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (4) [perdir /home/www/page_xyz/] RewriteCond: input='off' pattern='!=on' => matched
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (2) [perdir /home/www/page_xyz/] rewrite 'icalsrv.php/user_x/list.html' -> 'https://www.mydomain.de:8443/icalsrv.php/user_x/list.html'
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (2) [perdir /home/www/page_xyz/] explicitly forcing redirect with https://www.mydomain.de:8443/icalsrv.php/user_x/list.html
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (1) [perdir /home/www/page_xyz/] escaping https://www.mydomain.de:8443/icalsrv.php/user_x/list.html for redirect
123.123.123.123 - - [22/Aug/2008:16:24:41 +0200] [www.mydomain.de/sid#8134e80][rid#81d4050/initial] (1) [perdir /home/www/page_xyz/] redirect to https://www.mydomain.de:8443/icalsrv.php/user_x/list.html [REDIRECT/302]

Der Response-Header ist unveränderd zum vorherigen Beitrag.

marce schrieb:
So schwer sollte der Gedankengang doch nicht sein - vor allem, wenn man die Doku bei Apache aufmerksam gelesen hat und sich das hübsche Bildchen genau angesehen hast...
Die Apache-Doku und das hübsche Bildchen habe ich mir auch nochmal angeschaut, eigentlich sollte der Gedankengang nicht so schwer sein. Leider der funktioniert es immer noch nicht, auch wenn ich die zwei Regeln in der .htaccess vertausche, ist das Ergebnis das gleiche. Für weitere Hilfe bin ich dankbar.
 
Oben