Làm cách nào để kiểm tra nếu mod_rewrite được bật?


17

Tôi đang thiết lập một môi trường cho wordpress trên apache2, trên bản cài đặt mới của Ubuntu 12.04.

Để các URL thân thiện hoạt động, tôi đang cố gắng thiết lập mod_rewrite. Tôi đã làm theo một số hướng dẫn tôi tìm thấy trên mạng và sử dụng a2enmod.

Hiện nay. Sau khi khởi động lại apache, tôi muốn kiểm tra xem mô-đun có thực sự được tải không.

Lệnh mà tôi đã tìm thấy để nhận danh sách các mô-đun được tải là:

apache2 -t -D DUMP_MODULES

Tuy nhiên, điều này trả về một lỗi:

apache2: tên người dùng xấu $ {APACHE_RUN_USER}

Vì vậy, làm thế nào để tôi thực sự liệt kê tất cả các mô-đun được tải, hoặc kiểm tra xem liệu mod_rewrite đã được bật chưa?

Câu trả lời:


18

KM01 có nghĩa là apachectlnhưng điều đó sẽ không cung cấp cho bạn những gì bạn cần. Điều đó sẽ kiểm soát việc bắt đầu / dừng / khởi động lại máy chủ, cùng với việc đưa ra một số thông tin trạng thái. Tùy chọn tệp php hoạt động, nhưng yêu cầu một số công việc bổ sung từ phía bạn. Thay vào đó, hãy thử chạy php từ dòng lệnh : $ php -i. Điều này xuất ra những gì phpinfo()đầu ra, chỉ trên dòng lệnh.

Bạn có thể nhận được danh sách các mô-đun được biên dịch bằng cách chạy $ apache2 -l, nhưng điều đó không giúp ích cho việc xem các mô-đun được tải động bằng cách sử dụng các lệnh LoadModule (hoặc khác).

Bạn có thể thấy những mô-đun nào đang được tải động bằng cách xem các mục trong /etc/apache2/mods-enabled/. Một số có một tệp conf bổ sung trong cùng thư mục để cấu hình. Những mô-đun KHÔNG được tải hai lần. Bạn có thể thấy một danh sách các mô-đun có sẵn để tải động bằng cách nhìn vào /etc/apache2/mods-available/. Bạn có thể kích hoạt chúng trên dòng lệnh với $ a2enmod <module_name>. Bạn có thể dỡ chúng với $ a2dismod <module_name>.

Khi bạn hoàn thành bật / tắt, bạn phải khởi động lại apache bằng $ service apache2 restarthoặc $ apachectl graceful. Bạn sẽ cần đặc quyền root (sudo) để làm hầu hết, nếu không phải tất cả, của công việc này.


4

1) <?php phpinfo(); ?>Nhập tệp php và lưu tệp đó và chạy tệp đó trong máy chủ.

2) Và bây giờ bạn có thể liệt kê danh sách thông tin, chỉ cần tìm từ Word mod_rewrite 'từ menu tìm kiếm của trình duyệt

3) Nếu nó được tìm thấy trong phần Mô-đun đã tải của mô-đun, thì mô-đun này đã được tải như bạn thấy trong hình bên dưới, nếu không, bạn cần chuyển sang bước tiếp theo để bật mô-đun mod_rewrite.

nguồn: http://roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html


4

Thay vì sử dụng apache2lệnh, bạn có apachectllệnh không? Nó phải ở cùng vị trí với apache2. Hoặc bạn có thể thực thi lệnh với các đặc quyền nâng cao bằng cách sử dụngsudo apache2 -t -D DUMP_MODULES


2

Như @Richard đã giải thích, nhưng những gì bạn thực sự cần làm để đạt được điều đó là có một tệp có nội dung sau:

<?php
    phpinfo();
?>

Điều này in ra nhiều thông tin khác nhau về cấu hình apache / php của bạn. Những thứ hữu ích khác mà bạn sẽ tìm thấy sẽ có nếu cài đặt hình ảnh hay không. Tất cả các mô-đun apache được tải là có.


2

Thông tin PHP sẽ không luôn cho bạn biết liệu nó có được kích hoạt hay không. Lấy làm tiếc!

Tuy nhiên, trang này trên Stack Overflow sẽ giúp bạn chỉ đúng hướng.

Ngoài ra, đây là một số php để liệt kê tất cả:

<?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>

2
Bạn nói đúng, giải pháp phpinfo (hoặc thông qua phần mở rộng apache) chỉ hoạt động nếu PHP được biên dịch / sử dụng như một mô-đun Apache. Không phải trong * CGI, FPM, v.v. Bên cạnh đó, mod_rewrite có thể được tải (LoadModule) nhưng việc viết lại có thể bị từ chối, theo AllowOverride và / hoặc Tùy chọn.
julp

2

Chỉ cần tạo mod_rewrite.phptập tin trong thư mục gốc của bạn và đặt mã dưới đây vào nó:

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

Bây giờ đổi tên .htaccesstập tin cũ của bạn

Chỉ cần tạo tệp .htaccess mới và đặt mã bên dưới.

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Bây giờ nhấn lưu.

Sau đó truy cập trang web của bạn, bạn sẽ nhận được một tin nhắn.


2

Trên centos 6.5+ ở loại thiết bị đầu cuối

httpd -M | grep 'rewrite'

Nếu trong câu trả lời, bạn có thể thấy Rewrite_module (được chia sẻ) thì có nghĩa là nó đã được cài đặt. Bạn có thể xóa grep 'viết lại' và lấy danh sách tất cả các mô-đun cho cài đặt Apache của bạn.


0

Trên loại suse là root trong terminal httpd2 -M, nó cung cấp một danh sách các mô-đun được tải. httpd2 -lchỉ cung cấp cho biên dịch trong các mô-đun. Điều này làm việc cho apache 2.4

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.