簡體   English   中英

.htaccess漂亮的網址問題(mod_rewrite)

[英].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.

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