月度归档 2016年6月28日

通过清心醉

LANMP负载均衡之静态文件的分发

好久没看负载均衡了,以前自己的框架站点因为CSS和JS文件的集中分散在站内的多处目录,为了可以更好的兼容负载均衡,让CSS和JS以及GOOGLE字体和其他样式文件放在第二个服务器来实现网络带宽的分发负载,特写此文章!

我们要载入css文件的话,一般都会以目录形式,还有就是域名方式。而后者就是流量负载均衡常用的写法。

比如义个qingxinzui.css文件

我可以放在根目录内,

直接请求的URL为./qingxinzui.css

如果为域名请求,为qingxinzui.com/qingxinzui.css

很明显,如果域名替换成其他的域,就可以实现静态文件的负载调用!

由于是测试服务器,所以有时会出现“已阻止跨源请求:同源策略禁止读取“的错误请求信息,原因是头部进行请求的时候,文件所属的IP、域、地址都是相同的。

要解决也很简单,当然了这是静态文件负载均衡的重中之重了

<VirtualHost 127.0.0.1:1688>
DocumentRoot /var/www/qingxinzui
ServerName qingxinzui.com
</VirtualHost>
<Directory “/var/www/qingxinzui”>
Header set Access-Control-Allow-Origin *
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Require all granted
</Directory>

由于作者的程序是在动态载入CSS/JS文件的,而服务器使用NGINX反响请求APACHE模式,所以修改后端的APAHCE就可以了,因为PHP解析完成之后仍然会生成伪静态文件。

如果你的是NGINX为前后服务器,直接修改NGINX的配置,语法转换下就可以了!

附带一提:Header set Access-Control-Allow-Origin *,这里的*表示服务器可以分发请求的所有域,建议实际线上服务器写上自己认为合法的域名!

通过清心醉

微信公众平台开发-redirect_uri参数错误

中国的IT技术难道真那么的菜吗?以前做微信开发的时候老是被redirect_uri 参数错误给困扰,百度、必应、GOOGLE搜索了下,全部都说哪设置哪设置,谁都知道是要怎么怎么的设置!口水多过茶。同时也鄙视下垃圾腾讯,一个简单的回调,就不能在你那边的服务端进行下301?

回到主题:redirect_uri在开发中,属于回调的URL地址,该地址的域必须和公众号后台设置是一样的没错。

但国内现在很多所谓的微信平台,就是你妹的小白!说你们强能开发出第三方管理,却没能力解决最基本的数据域回调问题!

微信设置授权域为:www.qingxinzui.com

然后如果请求为www.qingxinzui.com肯定没问题。

如果请求为qingxinzui.com,就出错了,可是国内垃圾微信第三方管理平台,却也不懂301的设置。

解决的方法是:在站点根目录

vi .htaccess  #如果文件存在就追加写入

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^qingxinzui.com [NC]

RewriteRule ^(.*)$ http://www.qingxinzui.com/$1 [L,R=301]

记得开启Rewrite模块,具体的看你的是NGINX还是APACHE来搜索!

别问哥是谁,哥是一个神话!在哥公布正确答案以前那些所谓的微信redirect_uri参数错误解决方案还没想到这个问题的!哥只能说,你们技术只能是这么点!

别只从程序的角度上考虑开发问题,一个好的程序员,是在系统为基础,I/O、数据为负载做前提!

2016-06-19 12:08:36

 

通过清心醉

开源一个B2B多域名独立SEO站点的伪静态规则

该多站多域名服务器集群独立SEO伪静态规则由作者“清心醉”独立编写,转发请注明出处!

您对开源的尊重,让更多一个人尊重源代码的原始作者!

function rewrite($link) {
$url_info = parse_url(str_replace(‘&amp;’, ‘&’, $link));
$url = ”;
$product_id=null; #–定义产品ID  //平台直接跳转
$data = array();
parse_str($url_info[‘query’], $data);
foreach ($data as $key => $value) {
if (isset($data[‘ipanying’])) {
if (($data[‘ipanying’] == ‘product/product’ && $key == ‘product_id’)
|| (($data[‘ipanying’] == ‘product/manufacturer/info’ || $data[‘ipanying’] == ‘product/product’) && $key == ‘manufacturer_id’)
|| ($data[‘ipanying’] == ‘information/information’ && $key == ‘information_id’)
|| ($data[‘ipanying’] == ‘ckz/word/word’ && $key==’word_id’ )  ) {

if ($data[‘ipanying’] == ‘product/product’ && $key == ‘product_id’ && STORE_ID==0){ #–如果为产品ID并且是平台的话
$product_id=$value;
}
$query = $db->query(“SELECT * FROM ” . DB_PREFIX . “url_alias WHERE `query` = ‘” . $db->escape($key . ‘=’ . (int)$value) . “‘”);

if ($query->num_rows && $query->row[‘keyword’]) {
$url = ‘/’ . $query->row[‘keyword’];

unset($data[$key]);
}
} elseif ($key == ‘path’) {
$categories = explode(‘_’, $value);

foreach ($categories as $category) {
$query = $db->query(“SELECT * FROM ” . DB_PREFIX . “url_alias WHERE `query` = ‘category_id=” . (int)$category . “‘”);

if ($query->num_rows && $query->row[‘keyword’]) {
$url = ‘/’ . $query->row[‘keyword’];
} else {
$url = ”;

break;
}
}

unset($data[$key]);

} elseif ($key == ‘ipanying’) {
$query = $db->query(“SELECT * FROM ” . DB_PREFIX . “url_alias WHERE `query` = ‘” . $db->escape($value) . “‘”);
if ($query->num_rows) {
$url = ‘/’ . $query->row[‘keyword’];
unset($data[$key]);
}
}
}
}

if ($url) {
unset($data[‘ipanying’]);

$query = ”;

if ($data) {
foreach ($data as $key => $value) {
$query .= ‘&’ . rawurlencode((string)$key) . ‘=’ . rawurlencode((string)$value);
}

if ($query) {
$query = ‘?’ . str_replace(‘&’, ‘&amp;’, trim($query, ‘&’));
}
}

//if (STORE_ID==0 && !empty($product_id)){
if (STORE_ID!=0){ #-如果非平台
$product_url=$model->getStoreUrl(STORE_ID); #-强制获取店铺URL
$url=str_replace(‘/’,”,$url);  #– 提取URL
return $product_url. $url . $query; #– 返回拼接URL
}  else if(STORE_ID==0 && !empty($product_id)){ #如果是平台并且有产品调用(因为产品是二级域名)
$store_id=$model->getProductAsStore($product_id); #– 获取产品对应的店铺ID
$product_url=$model->getStoreUrl($store_id); #– 根据店铺ID获取网站URL
$url=str_replace(‘/’,”,$url);  #– 因为店铺URL中已经存在‘/’符号,所以进行删除
return $product_url. $url . $query; #– 返回拼接URL
}  else {
return $url_info[‘scheme’] . ‘://’ . $url_info[‘host’] . (isset($url_info[‘port’]) ? ‘:’ . $url_info[‘port’] : ”) . str_replace(‘/index.php’, ”, $url_info[‘path’]) . $url . $query; #-否则就是平台而且无PRODUCT产品的时候的平台直属URL
}

} else {
return $link;
}
}

 

调用的模型类中其实就是对数据库的操作!

$store_id=$model->getProductAsStore($product_id); #– 获取产品对应的店铺ID
$product_url=$model->getStoreUrl($store_id); #– 根据店铺ID获取网站URL

根据自己定义的实际URL来进行

该处代码为平台显示二级域名的产品时所产生伪静效果