2015-06-15 16 views
8

Ich benutze Wordpress und wollte hübsche URLs Feature aktivieren, aber sie funktionieren nicht, ich denke, dass es wegen mod_rewrite ist, aber ich weiß nicht, wie Sie es auf Apache 2.4 unter CentOS 7 aktivieren. .Wie aktiviert man mod_rewrite auf Apache 2.4?

ich habe schon diese versuchen:

grep -i LoadModule /etc/httpd/conf/httpd.conf | grep rewrite 

aber nichts ... auch möchte sie laden alle Apache-Module wissen, hat jede schlechte Folge oder ist es eine schlechte Praxis?

+0

gibt es in der Regel mehr als nur einen monolithischen conf diesen Tagen. z.B.Viele Distributionen werden Modulkonfigurationen/-aktivierungen in Dateien pro Modul einfügen. –

+0

Hmmm, weißt du, wie Centos 7 jetzt funktioniert? –

Antwort

14

ich den Weg zu wissen, fand die Module zur Liste aktiviert:

apachectl -M | sort 

Es werden alle aktivierten Module alphabetisch aufgelistet.

Wordpress hat eine .htaccess aber Standard, wo es rewrite_module für seine Verwendung ermöglicht:

# 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 

Das einzige, was ich tun musste, war dies

<Directory /var/www/mysite> 
    Options Indexes FollowSymLinks 
    Require all granted 
    AllowOverride All 
</Directory> 
bei /etc/httpd/conf.d/vhosts.conf zum vhost.conf Datei hinzufügen

Das liegt daran, dass ich meine Hosts in dieser Datei behandle. Aber es könnte bei httpd.conf oder jeder anderen .conf Datei durchgeführt werden, die das httpd.conf

Thanks ist ...

+0

'AllowOverride All' ist wichtiger Teil; und es ** muss ** in '' Block sein (Ich habe gebissen, indem ich es in '' Block und es hat sich nicht beschweren, aber auch nicht funktioniert) –

+0

aber das Verzeichnis/etc/httpd tut NICHT existiert auf Apache 2.4! (ubuntu 16.04) – Louis

+1

AllowOverride All dies hat ein Sicherheitsrisiko (und auch die Leistung). Überprüfen Sie https://httpd.apache.org/docs/current/howto/htaccess.html. –

4

Apache2 wird mit den ausführbaren Dateien a2enmod und a2dismod geliefert, die alle "schmutzige Arbeit" der symlinking conf-Dateien erledigen.

Auf Debian-basierten Distributionen ist der übliche Speicherort /etc/apache/mods-available/. Hier sind die .conf-Konfigurationsdateien (falls zutreffend) und eine .load-Datei pro Modul mit der LoadModule Apache2-Direktive. Ein Modul ist aktiviert, wenn es einen Symlink zu seiner .load-Datei in /etc/apache2/mods-enabled/ gibt. wenn ein Modul geladen ist oder nicht, ist hier zu befehlen

Sie würden zum Beispiel mit dem Befehl das Rewrite-Modul ermöglichen

$ a2enmod rewrite 
+0

Oh, aber wie lautet die Syntax ?, a2enmod mod_rewrite? –

+0

Dies ist die Ausgabe: ** sudo: a2enmod: Befehl nicht gefunden ** ... –

+0

Dann führen Sie keine Version von Apache2.4 aus einem offiziellen Distributions-Repository aus, d. H. Von einer anderen Quelle installiert oder manuell kompiliert. – marekful

9
# nano /etc/httpd/conf/httpd.conf 

finden

follow (AllowOverride none) 

und ändern Sie es

(AllowOverride All) 
+0

AllowOverride Alle haben ein Sicherheitsrisiko-Problem (und auch die Leistung). Überprüfen Sie https://httpd.apache.org/docs/current/howto/htaccess.html. –

0

für Rewrite Modul überprüfen Sie einfach diesen Youtube Schritt durch Schritt-Tutorial im Zusammenhang Rewrite-Modul in wamp Apache https://youtu.be/xIspOX9FuVU?t=1m43s
Wamp Server-Symbol aktivieren -> Apache -> Apache-Module und markiert als überprüfen Sie die Rewrite-Modul Option
nach, dass Sie die Lage url zu verwenden

2

In Umschreiben httpd.conf, Suche nach AllowOverride None und ändern sie es in AllowOverride All, starten sie apache