Mod_Rewrite lässt sich nicht aktivieren

Moritz123

Erfahrenes Mitglied
Hallo zusammen,

ich komme hier einfach nicht weiter mit meiner Apache-Installation.
Ich habe einen selbstkompilierten httpd mit folgender config.nice:
"./configure" \
"--prefix=/usr/local/apache" \
"--enable-shared=max" \
"--enable-rewrite" \
"--enable-module=so" \
Dort ist eindeutig vermerkt, dass er das mod_rewrite direkt mit aktivieren soll, ein
httpd -l listet auch das Modul:
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_include.c
mod_log_config.c
mod_env.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_so.c

Ich habe also testweise folgende Rule in meinem Docroot angelegt:
Code:
RewriteEngine On
RewriteRule ^(.*)\.html$ $1.php [L]
und eine index.php angelegt.
Bei Aufruf von http://localhost/index.html erhalte ich einen Error 500 und folgende Meldung im error_log:
Tue Aug 07 13:03:26 2012] [alert] [client 10.0.2.2] /home/user/public_html/.htaccess: Invalid command 'RewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration

Muss ich das mod_rewrite noch irgendwie aktivieren? Ich habe schon alles versucht (auch das Komplilieren des mod_rewrites als shared, was dann nur eine mod_rewrite.a bzw. mod_rewrite.la im modules-Verzeichnis erzeugt hat).

Vielen Dank!
 
Im Manual meines Apachen finde ich das:
Code:
-l     Output  a  list  of modules compiled into the server. This will not list dynamically loaded modules included using
       the LoadModule directive.

Code:
$ sudo a2enmod rewrite
$ sudo service apache2 restart
 
Hallo Erik,

vielen Dank für deine Antwort. Ich habe rewrite allerdings nicht als dynamische library sondern direkt mit einkompiliert (so wie beispsw. core.c).
Um a2enmod zu nutzen, muss das Shared Object des Moduls bereits fertig kompiliert vorliegen. Genau das tut es in meinem Fall aber nicht, da der make-Prozess lediglich eine mod_rewrite.a bzw. eine mod_rewrite.la Datei erzeugt, statt der gewünschten mod_rewrite.so.
 
Mhh, also in der von dir erwähnten Doku steht auch --enable-rewrite. Dies habe ich auch so an diversen Stellen im Internet gesehen. Nichtsdestotrotz werde ich das morgen nochmals so testen.

Vielen Dank erstmal - ich werde berichten, ob es klappt :)

NACHTRAG: Ich verwende übrigens (bewusst) Apache httpd 2.0.
 
Hi.
Ich meinte das hier:

Code:
--enable-rewrite=static

denn
--enable-MODULE=static
By default enabled modules are linked statically. You can force this explicitly.
Es scheint du hast dann aber die Hilfe nicht richtig verstanden. Static ist sowieso der Standard, man kann auch noch =static angeben, aber das ändert ja gar nichts am Ergebnis.

@moritz123:

Wenn du mod_rewrite statisch einkompiliert hast (und so sieht es ja aus) ist ein a2enmod unnötig.

Ich habe schon alles versucht (auch das Komplilieren des mod_rewrites als shared, was dann nur eine mod_rewrite.a bzw. mod_rewrite.la im modules-Verzeichnis erzeugt hat).
Eine .a ist eine statische Bibliothek. Du mußt eine .so erstellen. Was hast du denn genau gemacht?

Gruß
 
Zuletzt bearbeitet:
Hallo,

vielen Dank euch nochmals für die Antworten.
Um die mod_rewrite als shared object zu kompilieren, habe ich folgende configure-Options verwendet:
"./configure" \
"--prefix=/usr/local/apache" \
"--enable-shared=most" \
"--enable-rewrite=shared" \
"--enable-module=so" \

"make install" gibt dann u.A. folgendes aus:
/usr/local/src/httpd-2.0.63/srclib/apr/libtool --silent --mode=install cp mod_rewrite.la /usr/local/apache/modules/
Warning! dlname not found in /usr/local/apache/modules/mod_rewrite.la.
Assuming installing a .so rather than a libtool archive.
Unter /usr/local/apache/modules finden sich dann die besagte .a bzw. .la-Datei.
 
Unter /usr/local/apache/modules finden sich dann die besagte .a bzw. .la-Datei.
Also irgendwas hast du falsch gemacht.

Welche Version hast du denn genau?

Test mit Apache 2.0.64:
Code:
./configure --enable-rewrite=shared && make && make install
Resultat:
Code:
$ ls prefix/modules
httpd.exp  mod_rewrite.so
Was soll denn die Option "--enable-module=so" bedeuten? Meintest du evtl. "--enable-so"?

Und statt --enable-shared meintest du --enable-mods-shared?

Ist denn configure wirklich durchgelaufen?

Gruß
 
Also configure ist ohne Probleme durchgelaufen - Version ist 2.0.63.

Ich bin im wesentlichen dieser Anleitung gefolgt: http://www.lamphowto.com/ - dort sind auch die ensprechenden configure-Flags verzeichnet. Ich werde es aber nochmals mit folgender Konfiguration versuchen:
"./configure" \
"--prefix=/usr/local/apache" \
"--enable-mods-shared=most" \
"--enable-rewrite=shared" \
"--enable-so" \
Ich melde mich gleich nochmals.

Vielen Dank!
 

Neue Beiträge

Zurück