Page 1 of 1

[GELÖST] Umlenkung Feed-Adresse (Kein Pretty URL)

Posted: Mon Jan 12, 2009 10:06 pm
by hibr
Nach Upgrade von CMSms 1.4.1 zu 1.51 und CGFeedMaker muss nun auch die alte Feedadresse auf die neue umgelenkt werden. Ich verwende für News und Feeds (aus "historischen" Gründen) keine Pretty URLs.

Nun muss die alte Feed-Adresse (ALT):

http://www.daec-duesseldorf.de/index.ph ... eturnid=15

auf die neue (NEU):

http://www.daec-duesseldorf.de/index.ph ... eturnid=15

umgeleitet werden. Da "Redirect 301" nicht funktionieren kann, muss ich es mit mod_rewrite machen. Da es nur eine Adresse ist, dachte ich, dass es einfach so geht:

Code: Select all

RewriteEngine On
RewriteRule ^index\.php?mact=News,cntnt01,rss&cntnt01showtemplate=false&cntnt01category=Allgemein%2CWebsite%2CVeranstaltung&cntnt01number=20&cntnt01returnid=15$ index.php?mact=CGFeedMaker,cntnt01,default,0&cntnt01feed=aktuelles&cntnt01showtemplate=false&cntnt01returnid=15
Leider geht es so nicht. Ich bekomme "dummy php file" angezeigt. Ich hab mir zwar schon etliche Tutorials und Dokus zu mod_rewrite angeschaut und auch außer der obigen diverse andere Lösungen probiert, aber  mod_rewrite rules haben es in sich.

BTW: mod_rewrite funktioniert bei mir mit normalen Seiten (Ich habe aus bestimmten Gründen: assume_mod_rewrite="true", use_hierachy="false" eingestellt) ohne Probleme.

Meine komplette .htaccess (ohne obiges Konstrukt):

Code: Select all

Options -Indexes

<Files "config.php">
order allow,deny
deny from all
</Files>

ServerSignature Off

Options +FollowSymLinks
RewriteEngine On

# URL Filtering helps stop some hack attempts
#IF the URI contains a "http:"
RewriteCond %{QUERY_STRING} http\: [OR]
#OR if the URI contains a "["
RewriteCond %{QUERY_STRING} \[ [OR]
#OR if the URI contains a "]"
RewriteCond %{QUERY_STRING} \] [OR]
#OR if the URI contains a "<__script__>"
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#OR script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#OR any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) 
RewriteRule ^.*$ - [F,L] 
# END Filtering

# Hier wird "http//daec-duesseldorf.de nach http://www.daec-duesseldorf.de umgeschrieben (kein DC)
RewriteCond %{HTTP_HOST} ^daec-duesseldorf.de$ [NC]
RewriteRule ^(.*) http://www.daec-duesseldorf.de/$1 [L,R=301]

# CMSMS Rewriting
# Set assume mod_rewrite to true in config.php and clear CMSMS cache
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
# END CMSMS

# Spambots nach User_agent aussperren
RewriteCond %{HTTP_USER_AGENT} ^.*Whacker.*$ [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] 
RewriteCond %{HTTP_USER_AGENT} ^.*FileHound.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*TurnitinBot.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*JoBo.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*adressendeutschland.*$
RewriteRule ^.* - [F]

# END Rewrite rules
Danke für jeden Hinweis.

Hani

Re: Umlenkung Feed-Adresse (Kein Pretty URL)

Posted: Mon Jan 12, 2009 11:43 pm
by mike-r
hibr wrote: Da "Redirect 301" nicht funktionieren kann, muss ich es mit mod_rewrite machen. Da es nur eine Adresse ist, dachte ich, dass es einfach so geht:
Wieso kann das nicht funktionieren? Vor allem, wo es "nur eine Adresse ist"?

Re: Umlenkung Feed-Adresse (Kein Pretty URL)

Posted: Tue Jan 13, 2009 8:27 am
by hibr
mike-r wrote:
hibr wrote: Da "Redirect 301" nicht funktionieren kann, muss ich es mit mod_rewrite machen. Da es nur eine Adresse ist, dachte ich, dass es einfach so geht:
Wieso kann das nicht funktionieren? Vor allem, wo es "nur eine Adresse ist"?
Redirect soll laut http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirect  so funktionieren:

Redirect [status] URL-path URL

Das heisst, dass man von der URL, die man umleiten will, nur den
'path'-Teil der URL, nicht aber den 'query string' angeben
kann. (Hinten bei der Ziel-URL kann man dagegen eine URL mit 'query string' angeben)

Ich hatte es vor diesem Posting (aus Verzweifelung)  trotz besseren Wissens versucht und es hat erwartungsgemäß nicht funktioniert.

Trotzdem Danke für Deine schnelle Antwort.

Hani

Re: Umlenkung Feed-Adresse (Kein Pretty URL)

Posted: Mon Jan 19, 2009 8:01 pm
by hibr
Nach erstem Nachfrage in der Newsgroup de.comm.infosystems.www.authoring.misc hat Gustaf Mossakowski mir vorgeschlagen es ungefähr so zu versuchen:

Code: Select all

RewriteCond {%QUERY_STRING} ^mact=News,cntnt01,rss&cntnt01showtemplate=false&cntnt01category=Allgemein%2CWebsite%2CVeranstaltung&cntnt01number=20&cntnt01returnid=15$
RewriteRule ^(.*)$ http://www.daec-duesseldorf.de/index.php?mact=CGFeedMaker,cntnt01,default,0&cntnt01feed=aktuelles&cntnt01showtemplate=false&cntnt01returnid=15? [L,R=301]
Das hat zuerst nicht funktioniert. Es stand wieder die alte Adresse in der Url-Zeile des Browsers. Im Forum von modrewrite.de hat Markus Wulftange  mir vorgeschlagen, die "%2C" im Query-String gegen Kommas zu tauschen. Auch das hat zuerst nichts gebracht.

Um Schritt für Schritt einen vermeintlichen Fehler (Zeichen) zu finden habe ich den Query-String der RewriteCond "gekürzt" (Erst "^mact=News" dann "^mact=News,cntnt01" u.s.w.) um herauszufinden, ab wann die Umleitung nicht mehr funktioniert.

Der erste Versuch hat erwartungsgemäß funktioniert u.s.w. bis ich am Ende (voller Query-String) angekommen war. Es hat bei allen Zwischenschritten funktioniert auch mit vollem Query-String und mit den %2C! und obigem Ansatz. Ich habe aber keine Erklärung warum es am Anfang nicht funktioniert hat.

Mittlerweile habe ich auf eine Pretty-Url umgeleitet und das funktioniert auch. Ich bin zwar erstmal zufrieden, frage mich aber nach dem Grund.

Gruß Hani

PS: Für alle die ähnliches vorhaben: Obige Umleitungen müssen immer vor dem CMSms Rewriting (und natürlich nach "RewriteEngine On") stehen, wenn man Pretty Urls verwendet, sonst funktioniert es nicht.