คำถามติดแท็ก mod-rewrite

โมดูลการเขียน URL ใหม่สำหรับเว็บเซิร์ฟเวอร์ Apache โดยทั่วไปจะใช้สำหรับสิ่งที่เรียกว่า URL "สวย" แต่ยังให้พลังและความยืดหยุ่นในการดำเนินการจัดการคำขอต่างๆนอกเหนือจากการแทนที่ง่ายๆ

8
คุณสมบัติที่ซ่อนอยู่ของ mod_rewrite
ดูเหมือนว่าจะมีmod_rewriteกระทู้จำนวนพอสมควรที่ลอยอยู่รอบ ๆ เมื่อเร็ว ๆ นี้ด้วยความสับสนเล็กน้อยว่ามันทำงานอย่างไร ด้วยเหตุนี้ฉันจึงรวบรวมบันทึกย่อบางส่วนเกี่ยวกับฟังก์ชันการทำงานทั่วไปและอาจมีความแตกต่างที่น่ารำคาญเล็กน้อย คุณใช้คุณลักษณะ / ปัญหาทั่วไปอะไรอีกmod_rewriteบ้าง


8
วิธีการดีบัก. htaccess RewriteRule ไม่ทำงาน
ฉันมีRewriteRuleใน.htaccessแฟ้มที่ไม่ได้ทำอะไร ฉันจะแก้ไขปัญหานี้ได้อย่างไร ฉันจะตรวจสอบได้อย่างไรว่า.htaccessApache กำลังอ่านและปฏิบัติตามไฟล์อยู่หรือไม่ ฉันสามารถเขียนข้อความสะท้อน "มันใช้งานได้" ได้ไหมถ้าฉันเขียนมันบรรทัดนั้นจะสะท้อนออกมาที่ไหน หาก.htaccessไม่ได้ใช้ไฟล์จะทำให้ Apache ใช้งานได้อย่างไร? หาก.htaccessกำลังใช้งานอยู่ แต่ของฉันRewriteRuleยังไม่มีเอฟเฟกต์ฉันจะแก้ไขข้อบกพร่องได้อย่างไร

2
จะใช้“ AND”,“ OR” สำหรับ RewriteCond บน Apache ได้อย่างไร?
นี่คือวิธีใช้ AND, OR สำหรับRewriteCondบน Apache หรือไม่? rewritecond A [or] rewritecond B rewritecond C [or] rewritecond D RewriteRule ... something if ( (A or B) and (C or D) ) rewrite_itจะกลายเป็น จึงดูเหมือนว่า "OR" มีความสำคัญสูงกว่า "AND"? มีวิธีบอกง่ายๆเหมือนใน (A or B) and (C or D)วากยสัมพันธ์หรือไม่?

17
วิธีตรวจสอบว่าเปิดใช้งาน mod_rewrite บนเซิร์ฟเวอร์หรือไม่
ฉันกำลังใช้โฮสติ้งที่มีLightspeedเซิร์ฟเวอร์ โฮสติ้งแจ้งว่าmod_rewriteเปิดใช้งานแล้ว แต่ฉันไม่สามารถใช้งานสคริปต์ได้ที่นั่น เมื่อใดก็ตามที่ฉันพยายามเข้าถึง URL มันจะส่งกลับ404 - not found page ฉันใส่รหัสเดียวกันที่เซิร์ฟเวอร์อื่นซึ่งทำงานกับ Apache มันทำงานตรงนั้น ดังนั้นฉันเดาว่ามันเป็นปัญหา.htaccessและmod_rewrite แต่ฝ่ายสนับสนุนโฮสติ้งยังคงยืนยันกับฉันว่า mod_rewrite ของพวกเขาเปิดอยู่ดังนั้นฉันจึงอยากทราบว่าจะตรวจสอบได้อย่างไรว่าเปิดใช้งานจริงหรือไม่ ผมลองเช็คดูphpinfo()แล้วแต่โชคไม่เจอที่mod_rewriteนั่นเป็นเพราะใช้งานอยู่lightspeedหรือเปล่า? มีวิธีใดในการตรวจสอบ? กรุณาช่วยฉันออกไป. ขอบคุณ. FYI:.htaccessรหัสของฉันคือ Options -Indexes <IfModule mod_rewrite.c> DirectoryIndex index.php RewriteEngine on RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] </IfModule> ฉันพยายามเช่นนี้ด้วย DirectoryIndex index.php RewriteEngine on RewriteCond …

8
.htaccess - วิธีบังคับ“ www.” ในลักษณะทั่วไป?
สิ่งนี้จะเปลี่ยนdomain.comเป็นwww.domain.com: # Force the "www." RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] ฉันจะแทนที่ส่วน "โดเมน" เพื่อให้ทำงานกับโดเมนใด ๆ ได้อย่างไร

7
คุณต้องรีสตาร์ท apache เพื่อให้กฎการเขียนซ้ำใน. htaccess มีผลหรือไม่
ฉันได้พุชไฟล์. htaccess ของฉันไปยังเซิร์ฟเวอร์การผลิต แต่ไม่ทำงาน การรีสตาร์ทจะเป็นขั้นตอนถัดไปหรือฉันควรตรวจสอบอย่างอื่น

10
ชุดส่วนหัว Access-Control-Allow-Origin ใน. htaccess ไม่ทำงาน
ฉันคิดไม่ออกว่าทำไม.htaccessการตั้งค่าส่วนหัวของฉันจึงไม่ทำงาน .htaccessเนื้อหาไฟล์ของฉัน: Header set Access-Control-Allow-Origin * Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" Header always set Access-Control-Allow-Headers "*" RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L] แต่เมื่อฉันลบHeaderและเพิ่มเข้าไปindex.phpแล้วทุกอย่างก็ใช้ได้ดี header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS"); header("Access-Control-Allow-Headers: *"); ฉันขาดอะไรไป?

28
รับข้อผิดพลาด 500 เซิร์ฟเวอร์ภายในบน Laravel 5+ Ubuntu 14.04
ฉันติดตั้ง Laravel หลายครั้งบน Windows OS แต่ไม่เคยเกิดปัญหาประเภทนี้ เซิร์ฟเวอร์ภายใน 500 นี้มักเกิดขึ้นเมื่อโมดูล "mod_rewrite" ของคุณไม่ได้เปิดอยู่ อย่างไรก็ตามใน Ubuntu 14.04 ปัญหานี้ทำให้ฉันปวดหัว ฉันได้ติดตั้ง rewrite_mod แล้ว แต่ยังใช้งานไม่ได้ ฉันได้ให้สิทธิ์เข้าถึงโฟลเดอร์และไฟล์ทั้งหมดภายใน ie / var / www / html / laravel_project ยังคงไม่ได้ผล เปลี่ยน. htaccess เช่นกันจากเดิมเป็นสิ่งนี้ +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] ฉันมีส่วนขยายที่จำเป็นทั้งหมดที่จำเป็นสำหรับ Laravel 5+ เช่นกัน …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.