我們正在建立一個網站,希望每天能夠服務2k-5k的獨特用戶。 因爲該網站是面向阿拉伯喇叭我們配置的.htaccess文件 做重寫規則,如:600 +模式重寫規則,用apache可以嗎?
RewriteRule ^عربية$ arabic.php [L]
問題是,我們有600條重寫規則類似上面。 這是好的與Apache?或者這是否會讓我的服務器真的很慢? [L]標籤有幫助嗎?
我們正在建立一個網站,希望每天能夠服務2k-5k的獨特用戶。 因爲該網站是面向阿拉伯喇叭我們配置的.htaccess文件 做重寫規則,如:600 +模式重寫規則,用apache可以嗎?
RewriteRule ^عربية$ arabic.php [L]
問題是,我們有600條重寫規則類似上面。 這是好的與Apache?或者這是否會讓我的服務器真的很慢? [L]標籤有幫助嗎?
如果您只是靜態關鍵字,我寧願使用hash map而不是單獨的規則。因爲散列映射的查找操作的複雜性與O(n)相反,因此對於n規則而言是O(1)。
所以你可以做這樣的事情:
RewriteMap arabic-keywords dbm:/path/to/file/arabic-keywords.map
最初的關鍵字地圖格式的純文本文件:
عربية arabic.php
الأغاني songs.php
الفنان artist.php
然後使用httxt2dbm
打開純文本文件轉換成哈希映射:
httxt2dbm -i arabic-keywords.txt -o arabic-keywords.map
並且使用該地圖:
RewriteCond %{arabic-keywords:$0} .+
RewriteRule .+ %0 [L]
作爲散列重寫映射返回一個空字符串,如果沒有找到匹配,條件將只會被滿足,如果發現匹配。但請注意,RewriteMap
不能用於.htaccess文件context。
我認爲這對性能和可維護性來說太過分了。
我會做一個重寫規則來將所有相關請求轉發到arabic.php,然後使用php處理$ _SERVER ['REQUEST_URI']以獲得更多動態路由。
這會更易於維護。
這就是維基百科的神奇之處,但我們的網站不是可擴展的,但感謝您的2美分朋友。 – Tom 2011-03-18 08:22:51
請記住,Apache需要解析每個請求的.htaccess。你應該將重寫規則移動到你的VirtualHost配置文件(通常在httpd.conf中),它只能被解析一次:當apache啓動時。 – Maerlyn 2011-03-18 08:05:47
[你以前的問題](http://stackoverflow.com/questions/5302133/htaccess-rules-efficent-way)? – Gumbo 2011-03-18 08:10:48
@Gumbo它縮放比例從40到600 :) – Tom 2011-03-18 08:11:38