簡體   English   中英

如何在.htaccess中自動化rewriterule?

[英]How to automatize rewriterule in .htaccess?

我在.htaccess中這樣做:

RewriteRule ^([A-Za-z0-9-]+)[/]?$ /index.php?u1=$1 [L,QSA]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)[/]?$ /index.php?u1=$1&u2=$2 [L,QSA]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)[/]?$ /index.php?u1=$1&u2=$2&u3=$3 [L,QSA]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)[/]?$ /index.php?u1=$1&u2=$2&u3=$3&u4=$4 [L,QSA]

有沒有辦法根據網址的長度自動從u1到u(無限)自動生成,而不必定義每個案例?

不,Apache和正則表達式都不提供對未指定數量的參數的編程處理。 但是PHP就是為這樣的東西而設計的,所以你最好只使用一個規則:

RewriteRule ^([A-Za-z0-9/-]+)$ /index.php?path=$1

然后通過調用forward-slash字符上的explode函數讓你的PHP腳本分開path變量。 你會得到一個包含完整路徑的每一段的數組。

通過這種方式,您的PHP腳本可以處理無限數量的路徑元素,並且Apache不需要自己試圖理解無限正則表達式模式。

暫無
暫無

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

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