Mengaktifkan mod_rewrite di Amazon Linux

9

Saya mencoba mengaktifkan mod_rewrite di instance Amazon Linux. Arahan Direktori saya terlihat seperti ini:

<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>

Dan kemudian lebih jauh ke bawah di httpd.conf saya punya LoadModulearahan:

... 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...

Saya telah berkomentar semua modul Apache tidak diperlukan oleh Wordpress.

Masih ketika saya mengeluarkan http restart dan kemudian memeriksa modul yang dimuat dengan /usr/sbin/httpd -lsaya hanya mendapatkan:

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

Di dalam virtual host yang berisi situs Wordpress saya punya yang .htaccessberisi:

# 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

.Htaccess dimiliki oleh apache yang dijalankan oleh apache pengguna. The apachectl -tperintah kembaliSyntax OK

/etc/httpd/conf.d/vhosts.confPenampilan saya seperti ini:

<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>

Apa yang saya lakukan salah? Apa yang harus saya periksa?

Lorenzo
sumber

Jawaban:

5

Arahan LoadModule akan memuat modul secara dinamis.

Coba keluarkan RewriteEngine ondalam virtual host diikuti oleh apachectl -tuntuk mengkonfirmasi cuaca atau tidak modul benar-benar dimuat.

James Park-Watt
sumber
Hai James, terima kasih atas jawaban yang saya tambahkan lebih detail pada pertanyaan tentang apa yang Anda tunjukkan. RewriteEngine aktif dan apachectl -t mengembalikan Sintaks OK tapi masih tidak berfungsi.
Lorenzo
Maaf saya menghapus komentar terakhir saya itu salah. Anda telah mengambil ini dari file .htaccess wordpress bukan? Apakah Anda memiliki AllowOverride semua yang diaktifkan di konfigurasi VHost Anda?
James Park-Watt
Hai James, ya saya sudah mengambilnya dari WP. Ya AllowOverride pada subdirektori dari DocumentRoot saya disetel ke Semua
Lorenzo
Silakan coba ini: Di ​​konfigurasi server - bukan .htaccess tambahkan baris RewriteEngine Ondan RewriteRule ^.*$ http://www.wordpress.org/ [R]untuk mengonfirmasi apakah penulisan ulang berfungsi sama sekali. Itu harus melewati semua lalu lintas ke situs web Wordpress.
James Park-Watt
Saya menghapus .htaccess dari WP dan melakukan perubahan yang Anda sarankan tetapi tidak berhasil.
Lorenzo
5

Saya baru saja memulai linux amazon baru dan memiliki masalah yang sama dan Options FollowSymLinkada di sana tetapi baris berikutnya AllowOverride Noneharus diubah menjadiAllowOverride All

Adrian
sumber
3

Konfigurasi saya benar tetapi saya perlu

Options FollowSymLink

dalam deklarasi DocumentRoot saya di httpd.conf agar mod_rewrite berfungsi.

Lorenzo
sumber
1

Saya mendapat solusi untuk masalah ini .....

Saya telah berubah AllowOverride Nonemenjadi AllowOverride all, Options Indexes FollowSymLinksdi bawah ini dalam file konfigurasi/etc/httpd/conf/httpd.conf

Terima kasih!

Vatsal Shah
sumber