mod_rewrite global nutzen?

Alles, was den Apache betrifft, kann hier besprochen werden.

mod_rewrite global nutzen?

Postby TConnect » 08. August 2004 16:14

Hallo zusammen,

ich habe mal eine Frage zu mod_rewrite. Über die .htaccess-Datei in einem speziellen Ordner habe ich bereits einige Rules erfolgreich laufen. Ich möchte aber, dass die Rules global ausgeführt werden. Wo genau muß ich diese denn dann eigentlich in der httpd.conf platzieren? Irgendwo oder nach bestimmten Regeln? Kann mir da jemand weiterhelfen?

Zweite Frage: Mal angenommen, das funzt global und ich möchte weitere Rules testen... Kann ich diese dann wiederum einfach in eine .htaccess Datei schreiben?

Grüße Tim
TConnect
 
Posts: 100
Joined: 31. March 2004 22:26

Noch mal anders gefragt

Postby TConnect » 09. August 2004 17:08

Hallo zusammen,

vielleicht ist meine Frage nicht klar geworden und ich stelle diese einfach noch einmal neu. Also:

Ich habe einen Webserver, der mittels mod_rewrite lustig und munter einige URL-Umformungen macht. Die entsprechenden Rules sind in (momentan) einer einzigen .htaccess Datei gespeichert. Diese liegt im Root-Verzeichnis eines virtuellen Hosts und ist deswegen auch nur dort gültig. Um dieselben Regeln auch auf anderen virtuellen Hosts nutzen zu können, müßte ich also einfach nur die .htaccess-Datei in die jeweiligen Root-Verzeichnisse kopieren.

Aber genau das ist mir zu umständlich, da ich dann bei der Änderung oder Erweiterung der Regeln in allen Verzeichnissen die .htaccess-Datei überschreiben müßte.

Ich habe hier im Forum zu mod_rewrite gelesen, dass man die Rules auch in der htpd.conf definieren kann. Und jetzt meine Frage:

Wo und mit welcher Syntax? Einfach nur irgendwo hintippen denke ich ist da nicht die Lösung.

Derzeit habe ich in der httpd.conf:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteLog "/home/web/log/rewrite.log"
RewriteLogLevel 0

# und zwei in der .htaccess funktionierende Rules.
</IfModule>


Warum funzen die nicht hier in der httpd.conf?

Hat da jemand Ideen oder vielleicht ein HOWTO im Netz?

Liebe Grüße
Tim
TConnect
 
Posts: 100
Joined: 31. March 2004 22:26

Postby Wiedmann » 10. August 2004 10:12

Wo und mit welcher Syntax? Einfach nur irgendwo hintippen denke ich ist da nicht die Lösung.

Eigentlich ist es eher andersherum. In eine .htacces kannst du z.T. auch das reinschreiben (alles was im Direktory-Kontext konfigurierbar ist), was normal in die httpd.conf gehört (sofern es erlaubt ist).

Es sind also logischerweise die selben Befehle und Syntax wie du sie auch im Apache-Manual nachlesen kannst.

Wo du es hinscheibst kommt eigentlich ganz darauf an was du machen willst. Für eine Directive die den ganzen Server betreffen soll irgendwo, ausserhalb von VirtualHost - Blöcken steht. Durch Directory, Location, Files wird da nur noch genauer eingeschränkt, ist aber grundsäztlich überall gültig (Sofern sie später nicht wieder geändert wird, direkt in einem VHost oder einer .htaccess ...)

Derzeit habe ich in der httpd.conf:
...
# und zwei in der .htaccess funktionierende Rules.

Warum funzen die nicht hier in der httpd.conf?

Geschickt uns nicht zu sagen welche Regeln nicht gehen, und auch nicht warum sie nicht funzen (rewrite.log / Browserausgabe)...
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Es will einfach nicht

Postby TConnect » 21. December 2004 00:59

Hallo Leute,

ich habe jetzt nach einiger Zeit noch mal etwas Muße gehabt, rum zu probieren. Ich bekomme diese blöde Rewrite_Rule einfach nicht global zum Laufen. Vielleicht poste ich einfach noch mal einige Details:

1. Hab einen Apache mit mehreren vhosts.
2. Das DocumentRoot des Apache sei /http/docs
3. Die DocumentRoots der vhosts sind demnach /http/docs/domainname

Die Domains sollen so umgeschrieben werden:

http://www.domainname.de/page,1234,0,0,12,1.htm ->
http://www.domainname.de/index.php?var1=page&var2=1234[...]

Das funktioniert auch prächtig, was heißt, dass die Rules fehlerfrei sind. Problem: Sie liegen im DocumentRoot eines *jeden* vhosts. Wenn sich nun irgend wann mal die Rule ändert oder vielleicht eine hinzu kommt, müßte ich *jede* .htaccess Datei in jedem DocumentRoot manuell ändern, was ich mir sparen will.

Mein Frage ist einfach nur: Wo exakt muß ich meine Rules in der httpd.conf unterbringen, damit diese für alle vhosts ein einziges mal definiert wird, dann aber in allen vhost-Roots gilt?

Folgendes hab ich versucht:

<Directory /http/docs>
RewriteEngine on
Options +FollowSymlinks
RewriteRule ^([0-9a-zA-Z]*),([0-9]*)\.htm$ index.php?x1=$1&rid=$2
</Directory>

Dieselben einstellungen ersatzweise auch mal in:

<IfModule mod_rewrite.c>
[...]
</IfModule>


Danach habe ich die .htaccess in der Testdomain umbenannt und daraufhin erhalte ich "Seite kann nicht gefunden werden". Der Apache zeigt mir nach dem Reboot aber keine Fehler an.


Kann mir da vielleicht jemand unter die Arme greifen?

Danke
Grüße TConnect...
TConnect
 
Posts: 100
Joined: 31. March 2004 22:26

Postby deepsurfer » 21. December 2004 10:01

Gedankensprung:
wenn eine .htaccess im obersten Verzeichniss liegt (/opt/lampp/htdocs) wird diese, egal welche URLparameter existieren, eingelesen und deren Inhalt gilt für alle unterliegenden Verzeichnisse und somit für alle VHOST, deren Verzeichniss unterhalb von /opt/lampp/htdocs/vhost1 | vhost2 | vhost3 liegen.

Soll heissen, das die .htaccess im obersten Webverzeichniss (htdocs) als globale htaccess von Apache genommen wird. (steht ja auch in der httpd.conf)


oder irre ich mich jetzt, was ich aber jetzt kaum glaube

chirio
Deep
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Kann sein, geht aber dennoch nicht

Postby TConnect » 23. December 2004 15:46

Hallo zusammen,

ja gut. Ich bin aufgrund der letzten Überlegung mal hingegangen und habe die .htaccess, die unterhalb eines vhosts korrekt funktionierte, in das htdocs-Verzeichnis kopiert. Wenn die Überlegung stimmt, dann müßten ja alle funktionierenden Rules in dieser Datei in den vhosts funktionieren. Tun sie aber nicht... leider.

Wie sieht es denn mit Pfadangaben aus. Ich hab noch mal geschaut und bemerkt, dass ich immer eine Pfadangabe "unterschlagen" habe.

Die Rules lauten wie oben, aber mit vorangestelltem Pfad im Reaktionsteil:

RewriteRule Regel /ordner/index.php?[...]

Kann das sein, dass wenn dann die .htaccess-Datei einen Ordner nach oben verschoben wird, dass dann die Location det Zieldatei nicht mehr stimmt? Wenn dem so ist: Gibt es eigentlich eine Variabel, die das Root-Verzeichnis eines vhosts eindeutig bestimmt? In etwa so:

RewriteRule Regel %vhost_root/ordner/index.php?[...]



Grüße TConnect
TConnect
 
Posts: 100
Joined: 31. March 2004 22:26


Return to Apache

Who is online

Users browsing this forum: No registered users and 27 guests