Bagaimana saya menguji apakah mod_rewrite diaktifkan?

17

Saya sedang menyiapkan lingkungan untuk wordpress di apache2, pada instalasi baru Ubuntu 12,04.

Agar URL ramah berfungsi, saya mencoba mengatur mod_rewrite. Saya mengikuti beberapa instruksi yang saya temukan di internet, dan menggunakan a2enmod.

Sekarang. setelah memulai ulang apache, saya ingin memeriksa apakah modul tersebut benar-benar dimuat.

Perintah yang saya temukan untuk mendapatkan daftar modul yang dimuat adalah ini:

apache2 -t -D DUMP_MODULES

Namun, ini mengembalikan kesalahan:

apache2: nama pengguna yang buruk $ {APACHE_RUN_USER}

Jadi, bagaimana saya benar-benar mendaftar semua modul yang dimuat, atau memeriksa untuk melihat apakah mod_rewrite telah diaktifkan?

pengguna124130
sumber

Jawaban:

18

KM01 berarti apachectltetapi itu tidak akan memberi Anda apa yang Anda butuhkan. Itu akan mengontrol mulai / berhenti / mulai ulang server, bersama dengan memberikan beberapa informasi status. Opsi file php berfungsi, tetapi membutuhkan beberapa pekerjaan tambahan di pihak Anda. Sebaliknya, coba jalankan php dari baris perintah: $ php -i. Ini menghasilkan keluaran apa phpinfo(), hanya pada baris perintah.

Anda bisa mendapatkan daftar modul yang dikompilasi dengan menjalankan $ apache2 -l, tetapi itu tidak membantu untuk melihat modul yang dimuat secara dinamis menggunakan arahan LoadModule (atau lainnya).

Anda dapat melihat modul apa yang sedang dimuat secara dinamis dengan melihat entri di /etc/apache2/mods-enabled/. Beberapa memiliki file conf tambahan di direktori yang sama untuk konfigurasi. Modul-modul tersebut TIDAK dimuat dua kali. Anda dapat melihat daftar modul yang tersedia untuk memuat secara dinamis dengan melihat /etc/apache2/mods-available/. Anda dapat mengaktifkannya di baris perintah dengan $ a2enmod <module_name>. Anda dapat menurunkannya dengan $ a2dismod <module_name>.

Setelah selesai mengaktifkan / menonaktifkan, Anda harus memulai ulang apache dengan $ service apache2 restartatau $ apachectl graceful. Anda akan membutuhkan root (sudo) privilege untuk melakukan sebagian besar, jika tidak semua, dari pekerjaan ini.

Chris Smola
sumber
4

1) Ketikkan <?php phpinfo(); ?>file php dan simpan dan jalankan file itu di server.

2) Dan sekarang Anda dapat daftar informasi, cukup cari kata "mod_rewrite" dari menu pencarian browser

3) Jika ditemukan di bawah bagian "Modul Dimuat" maka modul ini sudah dimuat seperti yang Anda lihat pada gambar di bawah, jika tidak, Anda harus pergi ke langkah berikutnya untuk mengaktifkan modul mod_rewrite.

sumber: http://roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html

Richard
sumber
4

Alih-alih menggunakan apache2perintah, apakah Anda memiliki apachectlperintah? Itu harus di lokasi yang sama dengan apache2. Atau Anda bisa menjalankan perintah dengan menggunakan privilege yang ditingkatkansudo apache2 -t -D DUMP_MODULES

KM.
sumber
2

Seperti yang dijelaskan oleh @Richard, tetapi apa yang sebenarnya perlu Anda lakukan untuk mencapai itu adalah memiliki file dengan konten berikut:

<?php
    phpinfo();
?>

Ini mencetak berbagai informasi tentang konfigurasi apache / php Anda. Hal-hal berguna lainnya yang akan Anda temukan di sana adalah apakah Imagick diinstal atau tidak. Semua modul apache yang dimuat ada di sana juga.

Borislav Sabev
sumber
2

Info PHP tidak akan selalu menunjukkan kepada Anda apakah itu diaktifkan atau tidak. Maaf!

Namun, laman ini lebih pada Stack Overflow tidak membuat Anda menunjuk ke arah yang benar.

Atau, berikut adalah beberapa php untuk mendaftar semuanya:

<?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>
tuanich
sumber
2
Anda benar, solusi phpinfo (atau melalui ekstensi apache) hanya berfungsi jika PHP dikompilasi / digunakan sebagai modul Apache. Tidak dalam * CGI, FPM, dll. Selain itu, mod_rewrite dapat dimuat (LoadModule) tetapi penulisan ulang dapat ditolak, sesuai dengan AllowOverride dan / atau Opsi.
julp
2

Cukup buat mod_rewrite.phpfile di direktori root Anda dan tempatkan kode di bawah ini di dalamnya:

<?php 
echo
"Mod_rewrite is activated!"
; ?>

Sekarang ganti nama .htaccessfile lama Anda

Cukup buat file .htaccess baru dan tempatkan kode di bawah ini.

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Sekarang tekan save.

Kemudian kunjungi situs Anda, Anda akan mendapatkan pesan.

Menunggu
sumber
2

Pada centos 6.5+ pada tipe terminal

httpd -M | grep 'rewrite'

Jika dalam jawabannya, Anda dapat melihat rewrite_module (dibagi) artinya terinstal. Anda dapat menghapus grep 'menulis ulang' dan mendapatkan daftar semua modul untuk instalasi Apache Anda.

Nicolas Guérinet
sumber
0

Pada tipe suse sebagai root di terminal httpd2 -M, yang memberikan daftar modul dimuat. httpd2 -lhanya memberikan modul yang dikompilasi. Ini berfungsi untuk apache 2.4

Richard
sumber