mod rewrite ist geladen - funktioniert aber nicht!

Apache, Lighttpd, nginx, Cherokee
Post Reply
andi22
Posts: 16
Joined: 2004-09-27 19:24
 

mod rewrite ist geladen - funktioniert aber nicht!

Post by andi22 »

Hallo,

das ist wieder einer dieser Fehler die ich nie kapieren werde (zur Info: Ich habe einen Root-Server L von 1&1):
Ich will das mod rewrite Tool von Apache2 nutzen und habe dazu folgende .htaccess ins test Verzeichnis gelegt:

Code: Select all

Options +FollowSymLinks
RewriteEngine on
RewriteBase /test/
RewriteRule ^test_(.*)_(.*).html$ index.php?nav=$1&id=$2
Wenn ich jetzt die test_1_1.html in dem test-Verzeichnis aufrufen will, kommt folgender Fehler:

Code: Select all

Serverfehler!
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist. Der Server ist entweder überlastet oder ein Fehler in einem CGI-Skript ist aufgetreten. 

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber. 

Error 500
Keine Ahnung woran, das liegt. CGI ist aktiviert, die PHP-Info zeigt unter loaded modules das mod rewrite an, aber trotzdem funktioniert es nicht. Auf einem normalen Hostingpaket von 1&1 hab ich das ganze auch probiert, da hat es sofort hingehauen.

Hat jemand einen Idee woran das liegen könnte?

Danke.
--
Andi
r00ty
Posts: 747
Joined: 2003-03-17 15:32
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by r00ty »

was sagt das error log vom apachen ?
andi22
Posts: 16
Joined: 2004-09-27 19:24
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by andi22 »

Der Error Log gibt nix vernünftiges her, zumindest keinen Fehler 500. Allerdings hab ich nur die error_logs in /var/logs/apache2 angeschaut - gibts da noch andere Verzeichnisse, wo so was stehen könnte?

Jedenfalls weiß ich jetzt folgendes:
- in der Apachekonfirugation selbst habe ich nichts gemacht
- wenn man die .htaccess, so wie oben abgebildet, auf einen ganz normales Hostingpaket von 1&1 stellt funktioniert es problemlos beim ersten Mal.
- die Jungs vom Serversupport von 1&1 haben auch keine Ahnung, woran das liegen könnte und wollten sich mit dem Thema beschäftigen, tja das dauert wahrscheinlich noch
- Der erste Eintrag in der .htaccess (Options +SymLinksIfOwnerMatch) ist für den Error 500 verantwortlich
- Wenn man den ersten Eintrag weglässt, dann ist der erste Eintrag RewriteEngine on, was folgende Fehlermeldung hervorruft:
Zugriff verweigert!
Der Zugriff auf das angeforderte Verzeichnis ist nicht möglich. Entweder ist kein Index-Dokument vorhanden oder das Verzeichnis ist zugriffsgeschützt.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Error 403
Thu Jun 30 10:17:04 2005
Apache/2.0.49 (Linux/SuSE)
In dem Verzeichnis ist die .htaccess und eine index.php vorhanden. Wenn man die .htaccess löscht, kommt ganz normal die index.php

Hat irgendwer eine Idee woran es scheitern könnte? Bzw. hat wer einen 1&1 Root Server und dort eine Rewrite Regel erfolgreich installiert - das wäre nämlich eine große Hilfe.

Danke
--
Andi
remi
Posts: 21
Joined: 2005-05-21 23:34
Location: Paderborn
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by remi »

Was steht denn in der error.log, nachdem Du die Options-Direktive entfernt hast?

Wenn Du nicht weisst, welche error.log-Dateien auf Deinem Server sind, solltest Du dies schnellstens herausfinden. Vielleicht hilft ein

Code: Select all

find / -name error_log
andi22
Posts: 16
Joined: 2004-09-27 19:24
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by andi22 »

In dem selben Directory gibt es ja noch eine Datei namens error_log - die habe ich jetzt durchforstet und was gefunden (zuvor hab ich noch immer in den alten error_log_**.gz geschaut).

Code: Select all

[Mon Jun 27 20:51:39 2005] [alert] [client 82.135.13.12] /home/htdocs/web0/html/test/.htaccess: Options not allowed here

[Mon Jun 27 21:27:02 2005] [error] [client 82.135.13.12] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /home/htdocs/web0/html/test/
Ich hoffe das hilft was.

Dann noch was anderes:
In dem error_log waren 1000ende Fehler die so lauteten:

Code: Select all

[Mon Jun 27 22:04:16 2005] [error] [client 84.134.1.237] File does not exist: /home/htdocs/web0/html/favicon.ico
Die favicon.ico ist meines Wissens so ein kleine Grafik, die in der Adresszeile des Browsers auftaucht. Wird die immer aufgerufen oder geschieht das nur, wenn es irgendwo im Quelltext steht - denn die ganze error_log ist davon überschwemmt. Man sollte wahrscheinlich schnellstmöglich eine favicon.ico hochladen, oder?
remi
Posts: 21
Joined: 2005-05-21 23:34
Location: Paderborn
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by remi »

Ja, das sind genau die Fehlermeldungen, mit denen Du weiter kommst:

Code: Select all

Options not allowed here
Dies sagt aus, dass Du in der .htaccess-Datei die Options-Direktive gesetzt hattest, diese aber aufgrund Deiner Apache-Konfiguration in .htaccess-Dateien nicht erlaubt ist. Da Du bei Deiner Konfiguration diese Option nicht überschreiben darfst, hast Du bei dem Versuch, diese trotzdem in die .htaccess-Datei einzufügen, einen "500 Internal Server Error" erhalten.

Code: Select all

Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden
Dies sagt aus, dass RewriteRule-Regeln nicht befolgt werden, weil weder die Opition "FollowSymLinks" noch "SymLinksIfOwnerMatch" für das betroffene Verzeichnis aktiviert ist. In der Folge erhältst Du einen "403 Forbidden"-Fehler angezeigt.

Also: Die Option "FollowSymLinks" oder die Option "SymLinksIfOwnerMatch" muss gesetzt werden.
  • FollowSymLinks weist den Apache an, symbolischen Links zu folgen.
  • SymLinksIfOwnerMatch weist den Apache an, symbolischen Links zu folgen, aber nur, wenn das verlinkte Verzeichnis auch dem gleichen User gehört
Wie kannst Du die Optionen "FollowSymLinks" oder "SymLinksIfOwnerMatch" setzen?
  1. In der .htaccess die Zeile "Option +FollowSymLinks" oder "Option +SymLinksIfOwnerMatch" einfügen. Achtung: Das geht bei Dir jedoch zur Zeit nicht, da eine andere Apache-Direktive ("AllowOverride") dies verhindert. Das ist imho auch sinnvoll, dass nicht alle User über die .htaccess-Datei eigenmächtig die Option-Direktive überschreiben dürfen.
  2. Die zweite (und imho bessere) Möglichkeit ist, das direkte setzen in der Apache-Konfigurationsdatei. Hierzu fügst Du in dem zugehörigen <Directory>-Abschnitt die Zeile "Option +FollowSymLinks" oder "Option +SymLinksIfOwnerMatch" ein und führst einen Restart des Apache durch.
Zur favicon.ico:
Die Datei wird vom MS Internet Explorer abgerufen, wenn jemand Deine Webseite in den Favoriten des Internet Explorers gespeichert hat. Wenn Du davon also 1000ende Aufrufe hast, dann ist Dein Server ja zumindest schonmal bei vielen Usern in den Favoriten abgelegt. Wenn Du eine passende favicon.ico dort ablegst, tauchen die Fehlermeldungen im error_log nicht mehr auf.

Gruß
Remi
andi22
Posts: 16
Joined: 2004-09-27 19:24
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by andi22 »

Danke für deine Hilfe - aber leider kommt immer noch der selbe Fehler. Nachfolgend ein paar Auszüge aus den Konfirugationsdateien, die ich jetzt so abgeändert habe (Den Apache habe ich natürlich auch neu gestartet):

Auszug httpd.conf:

Code: Select all

<Directory />
    Options +FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

# use .htaccess files for overriding,
AccessFileName .htaccess
# and never show them
<Files ~ "^.ht">
    Order allow,deny
    Deny from all
</Files>
Auszug confixx_mhost.conf:

Code: Select all

<Directory "/srv/www/confixx/html">
  AllowOverride None
  <IfModule mod_access.c>
        Allow from all
  </IfModule>

  <IfModule mod_rewrite.c>

    RewriteEngine On
    Options +FollowSymlinks

    RewriteRule ^reseller/res[0-9]+/(.*)$ reseller/$1 [L]

    RewriteRule ^user/[a-zA-Z][-a-zA-Z0-9_]{0,4}[0-9]+/(.*)$ user/$1 [L]

    RewriteRule ^ftplogin/[a-zA-Z][-a-zA-Z0-9_]{0,4}[0-9]+/(.*)$ ftplogin/$1 [L]
    RewriteRule ^ftplogin/[a-zA-Z][-a-zA-Z0-9_]{0,4}[0-9]+f[0-9]+/(.*)$ ftplogin/$1 [L]

    RewriteRule ^poplogin/[a-zA-Z][-a-zA-Z0-9_]{0,4}[0-9]+p[0-9]+/(.*)$ poplogin/$1 [L]

  </IfModule>

  AddDefaultCharset off

</Directory>
Auszug confixx_vhost.conf:

Code: Select all

<Directory "/home/htdocs">
  <Files ~ "^.ht">
    deny from all
  </Files>
  AllowOverride All
  AllowOverride Indexes  AuthConfig Limit  FileInfo
  Options All
  Options +FollowSymLinks +Includes
</Directory>

<Directory "/home/htdocs/web0/html">
  Options +FollowSymLinks

  #Options +ExecCGI
  <IfModule mod_access.c>
    Allow from all
  </IfModule>
</Directory>
Vielleicht kannst du damit was anfangen.
--
Andi
andi22
Posts: 16
Joined: 2004-09-27 19:24
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by andi22 »

Jetzt funktionierts! Hab noch in der confixx_vhost.conf AllowOverride All eingefügt und dann ging es auf einmal! Nach fast einer Woche immer wieder rumtüfteln und Tutorials lesen geht es jetzt endlich - danke für eure Hilfe.

Zur Info - mit AllowOverride None habe ich es dann auch nochmal versucht, dann funktionierte es aber nicht mehr.

Auszug confixx_vhost.conf:

Code: Select all

<Directory "/home/htdocs"> 
  <Files ~ "^.ht"> 
    deny from all 
  </Files> 
  AllowOverride All 
  AllowOverride Indexes  AuthConfig Limit  FileInfo 
  Options All 
  Options +FollowSymLinks +Includes 
</Directory> 

<Directory "/home/htdocs/web0/html"> 
  AllowOverride All #DIESE ZEILE HABE ICH NOCH EINGEFÃ?GT
  Options +FollowSymLinks 

  #Options +ExecCGI 
  <IfModule mod_access.c> 
    Allow from all 
  </IfModule> 
</Directory>
remi
Posts: 21
Joined: 2005-05-21 23:34
Location: Paderborn
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by remi »

Hallo Andi,

im Abschnitt

Code: Select all

<Directory /> 
    Options +FollowSymLinks
    AllowOverride None 
    Order deny,allow 
    Deny from all 
</Directory> 
solltest Du Options aber wieder zurück setzen:

Code: Select all

Options None
Generell musst Du schauen, in welchem Verzeichnis welche Optionen von vorhergehenden Konfigurationsanweisungen vererbt wurden.

vgl. auch "Wie Abschnitte zusammengefügt werden".

Gruß
Remi
tanami
Posts: 39
Joined: 2005-06-06 09:59
 

Rewrite mode - ich krieg die krise

Post by tanami »

Hallo,
habe nun 2 Tage alles mögliche ausprobiert aber ich bekomme es einfach nicht hin.

Fehlerlog

Code: Select all

(2) init rewrite engine with requested uri /fehler/welcome.gif
62.2.187.130 - - [04/Jul/2005:12:47:44 +0200] [www.australia-rental.de/sid#8125900][rid#82ba220/initial]
(1) pass through /fehler/welcome.gif
62.2.187.130 - - [04/Jul/2005:12:47:46 +0200] [www.fly-to-australia.com/sid#8126048][rid#82ba220/initial]
 (2) init rewrite engine with requested uri /bilder/new/amazone/australienreisefuhrer1.JPG
62.2.187.130 - - [04/Jul/2005:12:47:46 +0200] [www.fly-to-australia.com/sid#8126048][rid#82ba220/initial]
 (1) pass through /bilder/new/amazone/australienreisefuhrer1.JPG
62.2.187.130 - - [04/Jul/2005:12:47:46 +0200] [www.australia-rental.de/sid#8125900][rid#82be230/initial]


Eigentlich sollte das Forum das in htdocs/web66/html/anbieter/phpBB2/ liegt nur den rewrite durchführen können.

die .htaccess die in .../phpBB2/.htaccess liegt:
DirectoryIndex index.html intro.php portal.php index.php index.htm

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

RewriteEngine On
RewriteRule ^forums.* /index.php


RewriteRule ^viewforum([0-9]*)-([0-9]*)-([0-9]*).* /viewforum.php?f=$1&topicdays=$2&start=$3
RewriteRule ^mforum([0-9]*).* /viewforum.php?f=$1&mark=topic
RewriteRule ^forum([0-9]*).* /viewforum.php?f=$1

RewriteRule ^ptopic([0-9]*).* /viewtopic.php?t=$1&view=previous
RewriteRule ^ntopic([0-9]*).* /viewtopic.php?t=$1&view=next
RewriteRule ^newtopic([0-9]*).* /viewtopic.php?t=$1&view=newest
RewriteRule ^ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* /viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4
RewriteRule ^ftopic([0-9]*)-([0-9]*)-([0-9]*)-([a-zA-Z]*)-([a-zA-Z]*).* /viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5
RewriteRule ^ftopic([0-9]*)-([0-9]*).* /viewtopic.php?t=$1&start=$2
RewriteRule ^ftopic([0-9]*).* /viewtopic.php?t=$1
RewriteRule ^sutra([0-9]*).* /viewtopic.php?p=$1
Rewrite Mod ist aktive ... nur zur Info :-)

hier die confixx_vhost für den User web 66:

Code: Select all

php_admin_value safe_mode off
php_admin_value register_globals on
CheckSpelling On

RewriteLog /home/rewrite.log
RewriteLogLevel 10
RewriteEngine On

#######Rewrite Web66######
<Directory "/home/htdocs"> 
  <Files ~ "^.ht"> 
    deny from all 
  </Files> 
  AllowOverride All 
  AllowOverride Indexes  AuthConfig Limit  FileInfo 
  Options All 
  Options +FollowSymLinks +Includes 
</Directory> 

<Directory /home/htdocs/web66/html/anbieter/phpBB2"> 
  AllowOverride All 
 Options +FollowSymLinks +SymLinksIfOwnerMatch
  #Options +ExecCGI 
  <IfModule mod_access.c> 
    Allow from all 
  </IfModule> 
</Directory>

####End Web66###########
Ich weiss wirklich nicht mehr was ich noch ausprobieren soll :-(

Vielleicht habt Ihr eine Idee ?

Gruss Joerg
remi
Posts: 21
Joined: 2005-05-21 23:34
Location: Paderborn
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by remi »

@tanami:
Im Logfile steht, dass Dein Browser versucht hat, die Datei "/fehler/welcome.gif" und später die Datei "/bilder/new/amazone/australienreisefuhrer1.JPG" aufzurufen.

mod_rewrite ist die RewriteRules durchgegangen und hat für diese Aufrufe keine zugehörige RewriteRule gefunden, daher hat mod_rewrite den Aufruf nicht umgeformt, sondern so weitergereicht (pass through).

In Deinen RewriteRules tauchen auch keine Regeln für welcome.gif oder australienreisefuehrer1.JPG auf, zumal die Dateien auch nicht im root-Verzeichnis des VirtualHost liegen, sondern in Unterverzeichnissen.

Zu Deiner .htaccess-Datei: Bei Rewrite-Anweisungen innerhalb von .htaccess-Dateien ist die Anweisung RewriteBase wichtig und korrekt zu setzen.

Bei komplexen Regeln solltest Du zusätzlich am Ende einer jeden Regel die Optionen "[R,L]" setzen, damit bereits umgeschriebene Aufrufe nicht erneut von einer der nachfolgenden RewriteRules nochmal umgeschrieben werden (es sei denn, Du möchtest das so).

Gruss
Remi
tanami
Posts: 39
Joined: 2005-06-06 09:59
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by tanami »

Hi Remi, erstmal danke für die detailierte antwort :-)

Im Logfile steht, dass Dein Browser versucht hat, die Datei "/fehler/welcome.gif" und später die Datei "/bilder/new/amazone/australienreisefuhrer1.JPG" aufzurufen.

ok das verstehe ich :-)

mod_rewrite ist die RewriteRules durchgegangen und hat für diese Aufrufe keine zugehörige RewriteRule gefunden, daher hat mod_rewrite den Aufruf nicht umgeformt, sondern so weitergereicht (pass through).

ok

In Deinen RewriteRules tauchen auch keine Regeln für welcome.gif oder australienreisefuehrer1.JPG auf, zumal die Dateien auch nicht im root-Verzeichnis des VirtualHost liegen, sondern in Unterverzeichnissen.

ja aber warum werden sie dann aufgerufen ? auch wenn ich die RewriteBase /phpBB2 in der .htaccess angebe ändert sich nix ?

Zu Deiner .htaccess-Datei: Bei Rewrite-Anweisungen innerhalb von .htaccess-Dateien ist die Anweisung RewriteBase wichtig und korrekt zu setzen.

habe ich gemacht, hat aber nix geändert :(

Bei komplexen Regeln solltest Du zusätzlich am Ende einer jeden Regel die Optionen "[R,L]" setzen, damit bereits umgeschriebene Aufrufe nicht erneut von einer der nachfolgenden RewriteRules nochmal umgeschrieben werden (es sei denn, Du möchtest das so).

ok das habe ich ebenfalls eingefügt. Aber irgendwie habe ich einen Denkfehler, aber das liegt bestimmt daran das ich heute nacht meinen rooti neu aufsetzten musste, da die disc im eimer war :-(

Sei nicht böse das ich es nicht raffe :(
remi
Posts: 21
Joined: 2005-05-21 23:34
Location: Paderborn
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by remi »

tanami wrote:ja aber warum werden sie dann aufgerufen ? auch wenn ich die RewriteBase /phpBB2 in der .htaccess angebe ändert sich nix ?
Ich vermute, hier sitzt der Denkfehler: Es ist wichtig zu verstehen, dass die RewriteRules zwar mächtig sind, aber nichts an dem HTML-Code ändern, den eine Anwendung oder eine statische HTML-Datei an den Browser zurück liefert. :!:

In Deinem Fall liefert irgendeine HTML-Datei und/oder Anwendung einen HTML-Code, der dafür sorgt, dass die Datei "/fehler/welcome.gif" vom Browser angefordert wird. Und da Du für *.gif-Dateien keine RewriteRule definiert hast, ändert mod_rewrite den Aufruf nicht ab, sondern lässt ihn unverändert.

Beispiel

Du hast folgende RewriteRule:

Code: Select all

RewriteEngine on
RewriteRule test.php /neu/test2.php [R,L]
Wenn Du nun im Browser "test.php" aufrufst, leitet mod_rewrite um zu "/neu/test2.php". So weit, so gut.

Was aber, wenn das Skript "/neu/test2.php" einen HTML-Code zurückliefert, in dem auf das Image "/test.gif" verwiesen wird?
  1. Der Browser wird versuchen, die Datei "/test.gif" zu laden.
  2. Aber in dem og. Beispiel gibt es für die test.gif-Datei keine besondere Regel.
  3. Also wird der Aufruf "/test.gif" auch so (unverändert) an den Apache weitergereicht.
Ist die Datei "/test.gif" hingegen auch nach "/neu/test.gif" umgezogen, so muss dies mod_rewrite mit einer zusätzlichen RewriteRule mitgeteilt werden:

Code: Select all

RewriteEngine on
RewriteRule test.php /neu/test2.php [R,L]
# zusaetzliche Regel:
RewriteRule test.gif /neu/test.gif [R,L]

Wenn der Browser also in Deinem Fall aus irgendeinem Grund die Anweisung vorfindet, das Image "/fehler/welcome.gif" zu laden und Du dann keine passende RewriteRule für die *.gif-Dateien eingerichtet hast, dann wird mod_rewrite eben nicht eingreifen und den Aufruf auch nicht abändern, sondern so an den Apache weiterreichen (pass through).
tanami wrote: Zu Deiner .htaccess-Datei: Bei Rewrite-Anweisungen innerhalb von .htaccess-Dateien ist die Anweisung RewriteBase wichtig und korrekt zu setzen.

habe ich gemacht, hat aber nix geändert :(
Die Funktionsweise von RewriteBase ist anfangs nicht leicht zu verstehen. Da bleibt leider nix anderes, als gründliches durchlesen der entsprechenden Doku zu mod_rewrite.
tanami wrote:Sei nicht böse das ich es nicht raffe :(
Kein Problem, mod_rewrite gehört sicherlich zu den anspruchsvolleren Apache-Modulen.
tanami
Posts: 39
Joined: 2005-06-06 09:59
 

Re: mod rewrite ist geladen - funktioniert aber nicht!

Post by tanami »

ja klar das ist es auch die html seite hat src's zu anderem pfaden, aber nicht als../images ... sondern also http:// .... und die sind numal auch nicht local auf dem server :(

Super vielen Dank erstmal

gruss joerg
Post Reply