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 [email protected]
     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?

Lorenzo
quelle

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.

James Park-Watt
quelle
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

Adrian
quelle
3

Meine Konfiguration war korrekt, aber ich brauchte

Options FollowSymLink

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

Lorenzo
quelle
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!

Vatsal Shah
quelle