ฉันจะทดสอบว่า mod_rewrite เปิดใช้งานได้อย่างไร


17

ฉันตั้งค่าสภาพแวดล้อมสำหรับ WordPress บน apache2 บนการติดตั้งใหม่ของ Ubuntu 12.04

เพื่อให้ URL ที่เป็นมิตรทำงานได้ฉันกำลังพยายามตั้งค่า mod_rewrite ฉันทำตามคำแนะนำที่พบในเน็ตและใช้ a2enmod

ตอนนี้ หลังจากรีสตาร์ท apache ฉันต้องการตรวจสอบว่าโหลดโมดูลจริงหรือไม่

คำสั่งที่ฉันพบเพื่อรับรายการของโมดูลที่โหลดคือ:

apache2 -t -D DUMP_MODULES

อย่างไรก็ตามสิ่งนี้จะส่งกลับข้อผิดพลาด:

apache2: ชื่อผู้ใช้ที่ไม่ดี $ {APACHE_RUN_USER}

ดังนั้นฉันจะแสดงรายการโมดูลที่โหลดทั้งหมดจริง ๆ หรือตรวจสอบเพื่อดูว่า mod_rewrite ได้เปิดใช้งานหรือไม่

คำตอบ:


18

KM01 หมายถึงapachectlแต่นั่นจะไม่ให้สิ่งที่คุณต้องการ ที่จะควบคุมการเริ่ม / หยุด / รีสตาร์ทเซิร์ฟเวอร์รวมถึงการให้ข้อมูลสถานะบางอย่าง ตัวเลือกไฟล์ php ใช้งานได้ แต่ต้องการการทำงานเพิ่มเติมในส่วนของคุณ ให้ลองเรียกใช้ php จากบรรทัดคำสั่ง$ php -iแทน นี่เป็นเอาต์พุตอะไรที่phpinfo()เอาต์พุตบนบรรทัดคำสั่งเท่านั้น

คุณสามารถรับรายการโมดูลที่คอมไพล์ด้วยการรัน$ apache2 -lแต่นั่นไม่ได้ช่วยในการดูโมดูลที่โหลดแบบไดนามิกโดยใช้คำสั่ง LoadModule (หรืออื่น ๆ )

/etc/apache2/mods-enabled/คุณสามารถมองเห็นสิ่งที่โมดูลที่ถูกโหลดแบบไดนามิกโดยดูที่รายการใน บางคนมีไฟล์ conf เพิ่มเติมในไดเรกทอรีเดียวกันสำหรับการกำหนดค่า โมดูลเหล่านั้นไม่ได้รับการโหลดสองครั้ง /etc/apache2/mods-available/คุณสามารถดูรายการของโมดูลที่มีการโหลดแบบไดนามิกโดยมองใน $ a2enmod <module_name>คุณสามารถเปิดใช้งานได้ในบรรทัดคำสั่งด้วย $ a2dismod <module_name>คุณสามารถปลดปล่อยพวกเขาด้วย

เมื่อคุณทำเปิด / ปิดการใช้งานคุณต้องรีสตาร์ท Apache ด้วยหรือ$ service apache2 restart $ apachectl gracefulคุณจะต้องได้รับสิทธิ์รูท (sudo) เพื่อทำส่วนใหญ่ของงานนี้


4

1) พิมพ์<?php phpinfo(); ?>ไฟล์ php และบันทึกและเรียกใช้ไฟล์นั้นในเซิร์ฟเวอร์

2) และตอนนี้คุณสามารถรายการข้อมูลเพียงค้นหาคำว่า "mod_rewrite" จากเมนูค้นหาของเบราว์เซอร์

3) หากพบอยู่ในส่วน“ โมดูลโหลด” โมดูลนี้จะโหลดตามที่คุณเห็นในภาพด้านล่างมิฉะนั้นคุณต้องไปที่ขั้นตอนต่อไปเพื่อเปิดใช้งานโมดูล mod_rewrite

แหล่งที่มา: http://roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html


4

แทนที่จะใช้apache2คำสั่งคุณมีapachectlคำสั่งหรือไม่ apache2มันควรจะอยู่ในตำแหน่งเดียวกับ หรือคุณสามารถรันคำสั่งด้วยสิทธิ์ระดับสูงโดยใช้sudo apache2 -t -D DUMP_MODULES


2

เช่นเดียวกับ @Richard อธิบาย แต่สิ่งที่คุณต้องทำจริง ๆ เพื่อให้บรรลุคือการมีไฟล์ที่มีเนื้อหาดังต่อไปนี้:

<?php
    phpinfo();
?>

ข้อมูลนี้จะพิมพ์ข้อมูลต่าง ๆ เกี่ยวกับการกำหนดค่า apache / php ของคุณ สิ่งที่มีประโยชน์อื่น ๆ ที่คุณจะพบว่ามีหากติดตั้ง imagick หรือไม่ โมดูล apache ที่โหลดทั้งหมดนั้นมีเช่นกัน


2

ข้อมูล PHP จะไม่แสดงให้คุณเห็นเสมอว่ามีการเปิดใช้งานหรือไม่ ขออภัย!

อย่างไรก็ตามหน้านี้ไปบนกองมากเกิน ไม่ได้รับคุณชี้ไปในทิศทางที่ถูกต้อง

หรือนี่คือ php เพื่อแสดงรายการทั้งหมด:

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

2
คุณถูกต้องโซลูชัน phpinfo (หรือผ่านทางส่วนขยาย apache) ทำงานได้ก็ต่อเมื่อคอมไพล์ PHP / คอมไพล์ / ใช้เป็นโมดูล Apache ไม่ได้อยู่ใน * CGI, FPM เป็นต้นนอกจากนี้ mod_rewrite สามารถโหลดได้ (LoadModule) แต่การเขียนใหม่อาจถูกปฏิเสธได้ตาม AllowOverride และ / หรือตัวเลือก
julp

2

เพียงสร้างmod_rewrite.phpไฟล์ในไดเรกทอรีรากของคุณและวางโค้ดด้านล่างลงไป:

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

ตอนนี้เปลี่ยนชื่อ.htaccessไฟล์เก่าของคุณ

เพียงแค่สร้างไฟล์. htaccess ใหม่และวางรหัสด้านล่าง

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

ตอนนี้กดบันทึก

จากนั้นเยี่ยมชมเว็บไซต์ของคุณคุณจะได้รับข้อความ


2

บน centos 6.5+ ที่ประเภทอาคาร

httpd -M | grep 'rewrite'

หากในคำตอบคุณสามารถดู rewrite_module (แบ่งใช้) หมายความว่ามีการติดตั้งคุณสามารถลบ grep 'rewrite' และรับรายการโมดูลทั้งหมดสำหรับการติดตั้ง Apache ของคุณ


0

ในประเภท suse เป็น root ใน terminal httpd2 -Mที่ให้รายการของโมดูลที่โหลด httpd2 -lให้คอมไพล์ในโมดูลเท่านั้น มันใช้งานได้กับ apache 2.4

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.