簡體   English   中英

從htaccess重寫規則中排除多個路徑

[英]Exclude multiple paths from htaccess rewrite rule

我創建了一個新功能,希望能夠實現面包屑和更好的URL結構。

在此之前,我有以下規則:

RewriteRule ^pages/([a-z0-9,&-]+)/?$ ?action=viewArticleName&page_identifier=$1 [L,NC,QSA,B]

這意味着;

www.example.com/pages/contact 

從數據庫返回了一篇文章。 現在我想更改此設置,以便我的網址看起來像

www.example.com/categoryname/pagename

所以我的工作重寫規則是這樣的:

RewriteRule ^([^/]+)/([^/]+)$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L]

問題是此RewriteRule導致/ images包含的所有圖像都加載了文章的包含模板。

我可以想到三種可能的解決方案,但沒有實際的代碼:

1)我可以創建一個類別名稱數組嗎? 然后,我可以以某種方式使RewriteRule僅適用於這些名稱。

2)創建一個包含一些全局設置的類。 在這里有一些PHP定義或設置圖像路徑。 我所能想到的是;

define( "IMAGE_PATH", "//example.com/images" ); 

3)在Htacces文件中添加一些內容以從規則中排除某些路徑。

我知道MVC或類似的軟件會取得更好的效果。 這是關於我的學習的,請告訴我我是否在這里陷入困境!

非常感謝,亞當

您可以像這樣跳過所有現有文件和目錄 ,以防止所有圖像受到此新規則的影響:

# skip all existing files
RewriteCond %{REQUEST_FILENAME} !-f
# skip all existing directories
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L,QSA,B]

注意,在標志中添加了“ B”,這轉義了非字母數字字符,例如“&”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM