rewrite frage

Alle technisch orientierten Fragen und Diskussionen zum Thema Mail- und NNTP (Newsgroup), sowie Domains und Webhost - unabhängig davon, ob diese Dienste ein Add-On eines Internet-Zugangsproduktes, oder ein Standalone-Produkt eines Anbieters sind.
Forumsregeln
Alle technisch orientierten Fragen und Diskussionen zum Thema Mail- und NNTP (Newsgroup), sowie Domains und Webhost - unabhängig davon, ob diese Dienste ein Add-On eines Internet-Zugangsproduktes, oder ein Standalone-Produkt eines Anbieters sind.

Alle nicht-technischen Diskussionen werden im Bereich PROVIDER geführt.

rewrite frage

Beitragvon jutta » Di 22 Sep, 2009 16:09

folgende situation:

ich betreibe eine website mit serendipity (http://www.s9y.org). da gibts ein vom admin-script generiertes htaccess-file mit einer langen latte von RewriteRules drinnen:

Code: Alles auswählen
RewriteEngine On
RewriteBase /
RewriteRule ^((archives/([0-9]+))/?) index.php?/$1 [NC,L,QSA]
RewriteRule ^(authors/([0-9]+)-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
RewriteRule ^(feeds/categories/([0-9;]+)-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php$
RewriteRule ^(feeds/authors/([0-9]+)-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php?/$1$
RewriteRule ^(categories/([0-9;]+)-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,$
RewriteRule ^archives([/A-Za-z0-9]+)\.html index.php?url=/archives/$1.html [NC,$
RewriteRule ^([0-9]+)[_\-][0-9a-z_\-]*\.html index.php?url=$1-article.html [L,N$
RewriteRule ^feeds/(.*) index.php?url=/feeds/$1 [L,QSA]
RewriteRule ^unsubscribe/(.*)/([0-9]+) index.php?url=/unsubscribe/$1/$2 [L,QSA]
RewriteRule ^approve/(.*)/(.*)/([0-9]+) index.php?url=approve/$1/$2/$3 [L,QSA]
RewriteRule ^delete/(.*)/(.*)/([0-9]+) index.php?url=delete/$1/$2/$3 [L,QSA]
RewriteRule ^(admin|entries)(/.+)? index.php?url=admin/ [L,QSA]
RewriteRule ^archive/? index.php?url=/archive [L,QSA]
RewriteRule ^(index|atom[0-9]*|rss|b2rss|b2rdf).(rss|rdf|rss2|xml) rss.php?file$
RewriteRule ^(plugin|plugin)/(.*) index.php?url=$1/$2 [L,QSA]
RewriteRule ^search/(.*) index.php?url=/search/$1 [L,QSA]
RewriteRule ^comments/(.*) index.php?url=/comments/$1 [L,QSA]
RewriteRule ^(serendipity\.css|serendipity_admin\.css) index.php?url=/$1 [L,QSA]
RewriteRule ^index\.(html?|php.+) index.php?url=index.html [L,QSA]
RewriteRule ^htmlarea/(.*) htmlarea/$1 [L,QSA]
RewriteRule (.*\.html?) index.php?url=/$1 [L,QSA]


wenn man nach der domain "irgendwas" in den browser tippt, wird man immer richtung index.php umgeleitet, was ja meistens sinnvoll ist. nun stehe ich aber vor folgender aufgabe:

es gibt eine zusaetzliche statische html-seite, die thematisch zum blog gehoert und als http://www.example.com/chat.html oder http://www.example.com/chat/chat.html abrufbar sein soll. wenn ich die seite einfach in einen entsprechenden folder ins verzeichnis des blogs kopiere, wird sie klarerweise aufgrund der obigen regeln nicht einmal ignoriert.

ich habe vorige woche zum ersten mal im leben eine (funktionierende :ok: ) rewriterule geschrieben, bin dabei also blutige anfaengerin. kann mir bitte jemand einen tipp geben, wie ich das angehen kann?

und falls sich jemand fragt, warum ich die statische seite nicht einfach mit dem cms erstellt habe: geht nicht, weil da ein java-applet eingebaut ist (pjirc), das sich mit dem cms gewaltig "beisst". (applet laedt nicht und der browser haengt sich auf.)
jutta
Administrator
Administrator
 
Beiträge: 30473
Registriert: Do 15 Apr, 2004 10:48
Wohnort: wien

Re: rewrite frage

Beitragvon hotze_com » Di 22 Sep, 2009 19:00

//edit - Inhalt gelöscht.
Zuletzt geändert von hotze_com am So 13 Dez, 2009 17:33, insgesamt 1-mal geändert.
hotze_com
 

Re: rewrite frage

Beitragvon mo » Di 22 Sep, 2009 19:47

Wennst dein chat.html im Filesystem als chat.php oder so (jedenfalls nicht .htm oder .html) ablegen kannst, sollte es mit dem da gehen (ansonsten wirds schwieriger...):
Code: Alles auswählen
RewriteRule ^(chat/)?chat\.html chat.php [L,NC,QSA]

Ich habs jetz mal chat.php getauft.

ist vor:
Code: Alles auswählen
RewriteRule (.*\.html?) index.php?url=/$1 [L,QSA]

einzufügen.
LINEA7/XPIRIO ADSL 2048/512 FLAT
mo
Board-Mitglied
Board-Mitglied
 
Beiträge: 185
Registriert: Do 06 Jan, 2005 16:45

Re: rewrite frage

Beitragvon jutta » Di 22 Sep, 2009 20:06

danke euch beiden!

ich habe inzwischen noch eine 3. moeglichkeit gefunden. im s9y-handbuch steht, man kann in dem betreffenden ordner eine .htaccess mit der zeile 'RewriteEngine off' erstellen. ich werde mal alle 3 varianten probieren und schaun, welche nebenwirkungen damit verbunden sind.
jutta
Administrator
Administrator
 
Beiträge: 30473
Registriert: Do 15 Apr, 2004 10:48
Wohnort: wien

Re: rewrite frage

Beitragvon jjknw » Mi 23 Sep, 2009 16:11

Hallo jutta,

Die dritte (von Dir erwähnte) Möglichkeit wäre sicherlich die eleganteste, weil Du nicht an den (automatisch?) generierten RewriteRules "herumpfuschen" müsstest - denn bei einem Serendipity-Update könnten möglicherweise Deine Modifikationen wieder überschrieben werden.

Allerdings fürchte ich, dass es so, wie Du's beschrieben hast, nicht funktionieren wird, denn:
In der "zentralen" .htaccess-Datei werden einerseits durch "RewriteBase /" und anderseits durch "RewriteRule (.*\.html?) index.php?url=/$1 [L,QSA]" fast alle bisher nicht "erfassten" URLs einem Rewrite unterzogen, sodass Du gar nicht erst im /chat-Verzeichnis landest - die dortige .htaccess-Datei wäre also obsolet/würde nie zum Zug kommen.

Somit bleibt wohl keine andere Möglichkeit, als die Rewrite-Rules zu erweitern - wobei mir hotze's Lösungsansatz besser gefällt - falls er denn tatsächlich so funktioniert. Grundidee - im Gegensatz zu mo's Vorschlag - ist nämlich, alle URLs, die mit "chat/" beginnen - unabhängig der weiteren Verzeichnisstruktur und Dateiendung - ins richtige Verzeichnis zu lenken...

Ich werde noch weiter forschen und berichten...

edit: Versuche mal, spätestens als vorletzte Zeile folgendes einzufügen:
Code: Alles auswählen
RewriteRule ^chat/(.*) chat/$1 [L,QSA]

D.h. die Rule "matcht", wenn die URL (nach dem Domain-Teil) mit chat/ beginnt, gefolgt von keinem oder beliebig vielen anderen Zeichen (.*). Die "neu zusammengesetzte" URL lautet dann chat/, gefolgt von diesen beliebigen Zeichen, worauf $1 Bezug nimmt. Das [L] sagt aus, dass weitere RewriteRules ignoriert/übersprungen werden sollen.

Folgendes sollte somit äquivalent zum oberen Ausdruck sein:
Code: Alles auswählen
RewriteRule ^(chat/.*) $1 [L,QSA]
UPC Fiber Power Family 128.800/12.880 (Connect Box)
jjknw
Senior Board-Mitglied
Senior Board-Mitglied
 
Beiträge: 386
Registriert: Do 15 Nov, 2007 15:57
Wohnort: Wien

Re: rewrite frage

Beitragvon penguinforce » Mi 23 Sep, 2009 19:18

hmmm.... rules ohne conditions sind fad (und bringen mehr ärger als nutzen).

:diabolic:
penguinforce
 

Re: rewrite frage

Beitragvon jutta » Do 24 Sep, 2009 13:59

die loesung aus dem serendipity-handbunch funktioniert. (.htaccess mit 'RewriteEngine off' im betreffenden unterverzeichnis)

es funktioniert auch, im /chat/ verzeichnis folgende .htaccess unterzubringen:

Code: Alles auswählen
#RewriteEngine on
#RewriteBase /
#RewriteRule ^chat/(.*) chat/ [L,QSA]


natuerlich nicht auskommentiert ;)

die gleiche regel an vorletzter stelle in der .htaccess des hauptverzeichnisses hat zu einer lustigen fehlermeldung gefuehrt ("internal server error" oder so aehnlich und "verstaendigen sie den admin" ...)

und ja, die befuerchtung, dass die haupt .htaccess beim update ueberschrieben wird, habe ich auch. wobei s9y eh eins der freundlichsten systeme ist, was updates betrifft.
jutta
Administrator
Administrator
 
Beiträge: 30473
Registriert: Do 15 Apr, 2004 10:48
Wohnort: wien


Zurück zu MAIL- & NNTP-DIENSTE, DOMAINS & WEBHOSTING

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 24 Gäste