1
我有四個網址我想要重寫。結合Mod_rewrite規則
- domain.com/index.php?id=1234 => domain.com/1234
- domain.com/a.php?id=1234 => domain.com/a/1234
- domain.com/b.php?id=4321 => domain.com/b/4321
- domain.com/gallery.php => domain.com/gallery
其中,索引檢查數據庫和重定向到正確的頁面(a,b,c.php - ect),如果沒有找到有效的ID,則重定向到gallery.php。
我可以自己編寫適用於每個案例的RewriteRule,但是我不知道如何編寫它來處理所有這些規則,而不會違反規則。
這是我目前的mod_rewrite的.htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_URI} !/gallery$ #excludes case 4
RewriteRule ^(.*)$ index.php?id=$1 #handles case 1
RewriteRule ^(.*)/(.*)$ $1.php?id=$2 #handles cases 2 and 3
RewriteCond %{REQUEST_URI} /gallery$
RewriteRule ^/gallery$ /gallery.php [L] #handles case 4
這使得一切都重定向到domain.com/gallery.php和錯誤出在嘗試過多的重定向。即使我放入domain.com/a/1234,也會被重定向到domain.com/a/gallery.php
如何更好地分離這些情況 - 如果它匹配domain.com/1234後停止1 - 如果它匹配domain.com/a/1234停止案例2和3 - 如果domain.com/gallery停止domain.com/gallery.php後調用...
感謝您的幫助所有!
你是一個生命的救星!這很好!所以讓我確保我理解這裏的邏輯:RewriteCond只適用於下一個RewriteRule?所以如果我需要額外的RewriteCond來允許像css和圖像和字體這樣的東西,我必須在每個RewriteRule之前放置這些RewriteConds? –
不客氣。是的,RewriteCond只適用於下一個RewriteRule。 – anubhava