[英].htaccess pretty url problem (mod_rewrite)
我有一個目錄,按類別列出產品。 如果存在_GET
變量,則在查詢中使用它。 我想使用“漂亮的網址”,例如: example/a/1/b/2/c/3/d/4
變成example/index.html?a=1&b=2&c=3&d=4
我看到的大多數.htaccess
示例僅使用變量替換_GET
值,但是我可以使用如下規則:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.html?$1=$2&$3=$4&$5=$6 [L]
RewriteRule ([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.html?$1=$2&$3=$4 [L]
RewriteRule ([^/]+)/([^/]+)$ index.html?$1=$2 [L]
而且它可以工作...但是,當我添加越來越長的RewriteRules
(例如&17=$18
)時,它將停止工作。 鏈中的最后一個變量根據較早的值變成某種數組(在上面,它將建立index.html?a0=a1&a3=a4
)...
.htaccess
的變量數量是否有限制 謝謝!
mod_rewrite僅支持$9
和%9
。
我建議您修改腳本以使用$_SERVER['PATH_INFO']
,或使用RewriteMap
調用腳本以將路徑轉換為查詢字符串。
mod_rewrite
僅允許您具有十個反向引用,其中之一是整個可匹配部分(最終只剩下九個可定義的捕獲組),因此您肯定會受到限制。
但是,對我而言,檢查腳本文件中服務器的REQUEST_URI
/ SCRIPT_NAME
/ PATH_INFO
變量,並對其進行解析以從URL中獲取鍵值對將更為有意義。 然后,您只需在.htaccess
:
RewriteRule On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.html [L]
然后,您的腳本將處理其余的工作。 不過,我確實想知道,如果您有那么多的GET
變量,如果將它們全部制成“漂亮的” URL,實際上可讀性更高嗎? 畢竟,如果您在URL中使用二十多個正斜杠,那么僅在此時傳遞一個普通的查詢字符串就可以了。 但是,這取決於您的應用程序以及用戶如何使用這些URL進行交互,因此您可能有充分的理由希望這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.