Page 1 of 1

rewrite engine funktioniert nicht

Posted: 2005-06-30 20:05
by evilh
sicher ne noob frage, aber ich habe mich bisher nicht mit mod_rewrite auseinandergesetzt und bekomme es nicht zum laufen.

mod_rewrite ist in den apachen (2.0.50) einkompiliert.
jetzt habe ich in die httpd.conf folgendes reingesetzt:


RewriteEngine on

RewriteCond %{HTTP_HOST} ^(.*).meineseite.de$
RewriteRule ^(.*)$ http://www.meineseite.de [R=301,L]

sprich alle subdomains sollen auf die hauptdomain verweisen.

leider tut sich aber nichts, und bei aufruf einer (nicht vorhandenen) subdomain bekomme ich das htaccess fenster von confixx

any tips ?

Re: rewrite engine funktioniert nicht

Posted: 2005-06-30 20:27
by Joe User

Code: Select all

<VirtualHost _default_:80>
    DocumentRoot "/srv/www/htdocs"
    ServerName www.mydomain.tld
</VirtualHost>
<VirtualHost *:80>
    ServerName mydomain.tld
    ServerAlias *.mydomain.tld
    Redirect permanent / http://www.mydomain.tld/
</VirtualHost>

Re: rewrite engine funktioniert nicht

Posted: 2005-06-30 20:46
by evilh
ja nee, das redirected mir ja alle zugriffe auf das rootdir.
somit würde ja nicht mal ein link funktionieren

Re: rewrite engine funktioniert nicht

Posted: 2005-06-30 21:11
by remi
Hallo,

versuch es mal damit (die RewriteCond kannst Du dann in Ruhe Deinen Bedürfnissen anpassen):

Code: Select all

RewriteEngine on
RewriteCond %{SERVER_NAME} (subdomain1.mydomain.tld|subdomain2.mydomain.tld)
RewriteRule ^(.*)$ http://www.mydomain.tld/$1 [R,L]
Gruß
Remi

Re: rewrite engine funktioniert nicht

Posted: 2005-06-30 23:36
by evilh
leider ist das problem, daß bei mir gar keine rewrite rules funktionieren.
und ich habe keine ahnung warum... mod_rewrite ist wie gesagt einkompiliert

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 00:12
by remi
Dann hast Du vielleicht die Rewrite-Anweisungen in den falschen <Directory>-Abschnitt eingefügt.

Oder stehen die Rewrite-Anweisungen in einer .htaccess-Datei?

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 11:10
by evilh
ich habe es einmal versucht, indem ich es in die httpd.conf direct reingeschrieben habe (ohne directory einzutragen, da es ja nur für diese domain gilt, und ich somit ja keinen directory container bräuchte).

des weiteren habe ich versucht es in den directory container des webs zu schreiben (wobei "rewriteEngine on" in der httpd.conf stand)

beides mal wurden die anweisungen einfach ignoriert

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 12:51
by [gk]nichts
bist du dir ganz sicher das das Modul auch geladen wird? Kannst ja unter /etc/apache2/sysconfig.d/loadmodule.conf nachsehen ob "LoadModule rewrite_module" dort eingetragen ist, wenn nicht wirds nicht geladen :) Das Problem hatte ich zB. bis gestern ;)

Gruß

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 13:05
by evilh
die loadmodule.conf existiert bei mir gar nicht. ich hab den apachen damals selbst kompiliert. auch eine suche hat die datei nicht gefunden.

aber ein httpd2 -l gibt mir aus:

Code: Select all

Compiled in modules:
  core.c
  mod_access.c
  mod_auth.c
  mod_auth_anon.c
  mod_auth_dbm.c
  mod_auth_digest.c
  mod_ext_filter.c
  mod_include.c
  mod_log_config.c
  mod_log_forensic.c
  mod_env.c
  mod_mime_magic.c
  mod_cern_meta.c
  mod_expires.c
  mod_headers.c
  mod_usertrack.c
  mod_unique_id.c
  mod_setenvif.c
  mod_ssl.c
  prefork.c
  http_core.c
  mod_mime.c
  mod_dav.c
  mod_status.c
  mod_autoindex.c
  mod_asis.c
  mod_info.c
  mod_suexec.c
  mod_cgi.c
  mod_dav_fs.c
  mod_vhost_alias.c
  mod_negotiation.c
  mod_dir.c
  mod_imap.c
  mod_actions.c
  mod_speling.c
  mod_userdir.c
  mod_alias.c
  mod_rewrite.c
  mod_so.c
somit muss mod_rewrite ja nicht mehr geladen werden

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 13:29
by [gk]nichts
naja warum einfach wenns auch kompliziert geht ;) Mir fällt gerade ein, dass die geladenen Module ja auch via

Code: Select all

phpinfo() 
ausgegeben werden können :)

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 17:16
by remi
Die Rewrite-Konfiguration wird nicht vererbt. Daher solltest Du
das "RewriteEngine on" in den zuständigen <Directory>- bzw.
<VirtualHost>-Abschnitt schreiben.

Der einfachste Funktionstest für mod_rewrite ist der folgende:

Code: Select all

<Directory /pfad/zu/htdocs/>
RewriteEngine on
RewriteRule ^test.htm$ /test/test2.php [R]
</Directory>
Ein Zugriff auf test.htm müsste dann umleiten nach /test/test.2php.

Falls das bei Dir nicht funktioniert, poste mal die Auszüge aus der httpd.conf.

Ã?brigens:
Falls PHP als CGI installiert ist, zeigt phpinfo() die Module nicht an.

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 17:26
by [gk]nichts
wieder was gelernt ;) aber was meinst du genau mit "wird nicht vererbt" ? Dachte wenn man die regeln in der httpd.conf setzt gilt es für alle vhosts? *etwas verwirrt guckt*

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 17:49
by evilh
@remi:

wenn ich deine anweisung reinschreibe, dann bekomme ich beim aufruf der seite (für alle pfade)

einen "sie haben nicht die erforderlichen rechte um diese seite anzuzeigen"
logs steht gar nichts drin !?

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 17:50
by remi
Zumindest werden die Rewrite-Regeln nicht für VirtualHosts vererbt.
Note that, by default, rewrite configurations are not inherited. This means that you need to have a RewriteEngine on directive for each virtual host in which you wish to use it.
Quelle: mod_rewrite-Beschreibung

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 17:52
by remi
@evilh:
Auszug aus der httpd.conf?

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 18:22
by evilh
@remi,
welche passage genau ?

ich habe eben ein RewriteEngine on in der httpd.conf stehen, und den von dir geposteten code in dem entsprechenden directory container (bei mir ausgelagert in "confixx_virtualhosts"

Re: rewrite engine funktioniert nicht

Posted: 2005-07-01 19:04
by remi
Scheint mir das gleiche Problem wie hier zu sein.
AllowOverride und Options muss korrekt gesetzt sein. Danach erstmal mit einer einfachen RewriteRule ausprobieren.

So müsste der <Directory>-Abschnitt in der confixx_vhost.conf aussehen:

Code: Select all

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

  RewriteEngine on 
  RewriteRule ^test.htm$ /test/test2.php [R]

  # ...
</Directory>
Setze aber kein Confixx ein, daher kann ich es nicht testen.

Confixx soll diese Einstellungen wohl auch überschreiben. Gibt dort wohl eine Option, mit der Du die zusätzlichen Einstellungen über die Administrationsoberfläche von Confixx einstellen kannst.