Aktivieren von mod_rewrite unter Amazon Linux


8

Ich versuche, mod_rewrite auf einer Amazon Linux-Instanz zu aktivieren. Meine Verzeichnisanweisungen sehen folgendermaßen aus:

<Directory />
    Order deny,allow
    Allow from all
    Options None
    AllowOverride None
</Directory>

<Directory "/var/www/vhosts">
    Order allow,deny
    Allow from all
    Options None
    AllowOverride All
</Directory>

Und dann weiter unten in httpd.conf habe ich die LoadModuleDirektive:

... other modules...
#LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
... other modules...

Ich habe alle Apache-Module auskommentiert, die von Wordpress nicht benötigt werden.

Immer noch, wenn ich http Neustart ausgeben und dann die geladenen Module mit überprüfen, /usr/sbin/httpd -lbekomme ich nur:

[root@foobar]# /usr/sbin/httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

In dem virtuellen Host, der die Wordpress-Site enthält, befindet sich Folgendes .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Der .htaccess gehört Apache, unter dem der Benutzer Apache ausgeführt wird. Der apachectl -tBefehl kehrt zurückSyntax OK

Mein /etc/httpd/conf.d/vhosts.confsieht so aus:

<VirtualHost *:80>
     ServerAdmin foobar@gmail.com
     ServerName foobar.net
     ServerAlias www.foobar.net
     DocumentRoot /var/www/vhosts/foobar/
     ErrorLog /var/www/vhosts/foobar/logs/error.log
     CustomLog /var/www/vhosts/foobar/logs/access.log combined
</VirtualHost>

Was mache ich falsch? Was soll ich überprüfen?

Antworten:


5

Die LoadModule-Direktive lädt ein Modul dynamisch.

Versuchen Sie, RewriteEngine onauf einem virtuellen Host auszugeben apachectl -t, und bestätigen Sie anschließend , ob das Modul tatsächlich geladen ist oder nicht.


Hallo James, danke für die Antwort. Ich habe der Frage zu dem, worauf du hingewiesen hast, mehr Details hinzugefügt. RewriteEngine ist aktiviert und apachectl -t gibt die Syntax OK zurück, funktioniert aber immer noch nicht.
Lorenzo

Entschuldigung, ich habe meinen letzten Kommentar gelöscht. Es war falsch. Sie haben dies aus der WordPress-Datei .htaccess übernommen, nicht wahr? Haben Sie AllowOverride all in Ihrer VHost-Konfiguration aktiviert?
James Park-Watt

Hallo James, ja, ich habe es von WP genommen. Ja, der AllowOverride in den Unterverzeichnissen meines DocumentRoot ist auf All
Lorenzo

Bitte versuchen Sie Folgendes: Fügen Sie in der Serverkonfiguration - nicht .htaccess die Zeilen hinzu RewriteEngine Onund RewriteRule ^.*$ http://www.wordpress.org/ [R]bestätigen Sie, ob das Umschreiben überhaupt funktioniert. Der gesamte Datenverkehr sollte an die Wordpress-Website weitergeleitet werden.
James Park-Watt

Ich habe den .htaccess aus WP gelöscht und die von Ihnen vorgeschlagenen Änderungen vorgenommen, aber es funktioniert nicht.
Lorenzo

5

Ich habe gerade ein neues Amazon Linux gestartet und hatte das gleiche Problem und die Options FollowSymLinkwaren da, aber die nächste Zeile AllowOverride Nonemusste geändert werdenAllowOverride All


3

Meine Konfiguration war korrekt, aber ich brauchte

Options FollowSymLink

in der Erklärung von DocumentRoot in httpd.conf, damit mod_rewrite funktioniert.


1

Ich habe die Lösung für dieses Problem .....

Ich habe mich verändert , AllowOverride Noneum AllowOverride allunter Options Indexes FollowSymLinksin der Konfigurationsdatei/etc/httpd/conf/httpd.conf

Vielen Dank!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.