我们正在建立一个网站,希望每天能够服务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