apache rewrite 转 iis web.config

apache rewrite 转 iis web.config

1) ^(.*)/ 替换为 ^ ,
2) $1/ 删除
3) . ? 去掉前面的 \
4) $N 更换为 $N-1 ,从大到小换!!!

例子

RewriteRule ^(.*)/read_([0-9]+)/([0-9]+).html$ $1/modules/article/reader.php\?aid=$2&cid=$3
需要改为
RewriteRule ^read_([0-9]+)/([0-9]+).html$ modules/article/reader.php?aid=$1&cid=$2

web.config 就可以是

借用工具

https://www.toolnb.com/tools/rewriteTools.html

destoon的php5.4之后,title中文问题

destoon在php 5.4更高版本之后,会出现标题中文会自动为空的情况

解决方法是搜索,

function dhtmlspecialchars

修改这个函数为如下

参考地址 http://blog.sina.com.cn/s/blog_409bd3ad0102vgxl.html

function dhtmlspecialchars($string) { 
        $encoding = 'utf-8'; 
        if(DT_CHARSET=='gbk') 
        { $encoding = 'gb2312'; } 
        if(is_array($string)) { 
                return array_map('dhtmlspecialchars', $string);
} else { if(defined('DT_ADMIN')) { return str_replace(array('&'), array('&'), htmlspecialchars($string, ENT_QUOTES,$encoding));
} else { return str_replace(array('&', '"', '"', '"'), array('&', '', '', ''), htmlspecialchars($string, ENT_QUOTES,$encoding)); } } }

pure-ftp 服务器发回了不可路由的地址,使用服务器地址代替

一些服务器供应商的服务器采用反向nat方式,只给服务器内网ip,外网ip是映射得到的,比如172.x.x.x 或者 192.168.x.x , pure-ftp会返回这些内部ip的地址,从而导致外部互联网用户不可能达到。

pure-ftp的配置,添加

ForcePassiveIP 外部ip

PassivePortRange 39000 40000

然后重启pure-ftp,测试连接情况。

phpcmsphpsso在https情况下的改动(phpcms)

phpcms的phpsso,在https情况下,代码file_get_contents(“https://…….”);出现错误
 file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed ,

在phpcms的phpsso_server/phpcms/modules/admin/applications.php 的check_status函数里面

需要修改为

$arrContextOptions=array(
     "ssl"=>array(
         "verify_peer"=>false,
         "verify_peer_name"=>false,
     ),
 );    
      if ($data =  file_get_contents($url.'code='.urlencode($param),false,stream_context_create($arrContextOptions))) {

dedecms织梦的arclist标签的二次开发,增加参数

首先官网的开发文档

http://help.dedecms.com/manual/tagmanual/DedeTagmanual_Finnal/arclist.htm

我们增加 mydata参数
形式如下

 {dede:arclist row=14 titlelen=32  mydata="params"}

修改文件 \include\taglib\arclist.lib.php

1)增加参数获取 在 function lib_arclist( &$ctag, &$refObj ) 函数里面

$mydata = $ctag->GetAtt(‘mydata’);

2)传递参数到 函数 lib_arclistDone

return lib_arclistDone
           (
             $refObj, $ctag, $typeid, $ctag->GetAtt('row'), $ctag->GetAtt('col'), $titlelen, $infolen,
             $ctag->GetAtt('imgwidth'), $ctag->GetAtt('imgheight'), $listtype, $orderby,
             $ctag->GetAtt('keyword'), $innertext, $envs['aid'], $ctag->GetAtt('idlist'), $channelid,
             $ctag->GetAtt('limit'), $flag,$ctag->GetAtt('orderway'), $ctag->GetAtt('subday'), $ctag->GetAtt('noflag'),
             $tagid,$pagesize,$isweight,$mydata
           );
}

3) 函数 lib_arclistDone定义处增加 mydata

function lib_arclistDone(&$refObj, &$ctag, $typeid=0, $row=10, $col=1, $titlelen=30, $infolen=160,
        $imgwidth=120, $imgheight=90, $listtype='all', $orderby='default', $keyword='',
        $innertext='', $arcid=0, $idlist='', $channelid=0, $limit='', $att='', $order='desc', $subday=0, $noflag='',$tagid='', $pagesize=0, $isweight='N',$mydata='')

4) 在 函数 lib_arclistDone 里面为所欲为吧

  $mydata = AttDef($mydata,'默认参数');
  if($mydata == '默认参数')
  {
   //您的需求实现代码
  }

nginx配置文件的编码问题

nginx的配置文件居然可以用多种编码,比如utf8和gbk两种,

需要你把utf8和gbk分别写入两个文件比如  vhost1.conf vhost2.conf

然后在 nginx.conf 里面 include vhost1.conf; include vhost2.conf; 即可

这类应用一般是你在需要些配置文件时候用到中文的时候。

比如 :

subs_filter  ‘nihao’ ‘你好’;

有关,nginx的 subs_filter 是定制模块 地址在 https://github.com/yaoweibin/ngx_http_substitutions_filter_module

 

iptables 根据ip设置开放某些ip的访问,ip地址段 a-b 的方式

IPB=/sbin/iptables
$IPB -F INPUT

for kk in ` cat ip.txt | awk '{printf ("%s_%s\n",$1,$2)}'`
do
#echo $kk
startip=`echo $kk | awk -F "_" '{print $1}'`
endip=`echo $kk | awk -F "_" '{print $2}'`
$IPB -A INPUT -p tcp --dport 80 -m iprange --src-range $startip-$endip -j ACCEPT
done
### deny all 
$IPB -A INPUT -p tcp --dport 80 -j DROP

ip.txt内容是

1.0.1.0 1.0.3.255 768
1.0.8.0 1.0.15.255 2,048
1.0.32.0 1.0.63.255 8,192

discuz 更换服务器注意事项

  1. data 目录权限
  2. uc_server/data/config.inc.php 里面的参数
  3. 调试过程,首先调通uc_server  , 可以通过采用

define(‘UC_FOUNDERPW’, ‘9b9738685d85bd3aa1c09d624e44324f’);
define(‘UC_FOUNDERSALT’, ‘733905’); 

密码是 123456789

方法是 md5(md5(“123456789″).”733905”);

如果uc_server登陆不上去,看看 /uc_server/model 中找到admin.php

function adminbase() { 里面 

$this->cookie_status = 0;

修改为

$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;

调通uc_server 后,修改论坛的管理员密码,然后试试登陆 论坛admin.php

 

 

 

帝国cms重置密码的一个方法,程序员适用

e/class/adminfun.php 里面 function login

找到

$ch_password=DoEmpireCMSAdminPassword($password,$user_r[‘salt’],$user_r[‘salt2’]);

在这下面加 var_dump($ch_password);die();

然后前台直接写登录名,如果你没忘记的话,(如果忘记了,请到 phome_enewsuser 表里面查。)

密码的话,你就随便写一个你想设置的密码吧,然后提交

提交的结果是直接显示出来一个32位的字符串,把这个字符串更新到 phome_enewsuser 的password 字段吧

update phome_enewsuser set `password`=’这里刚才的那个字符串’ where username = ‘你的用户名’ ;

弄好后,把刚才的代码删掉 var_dump($ch_password);die(); 恢复原状。哈哈哈

然后就可以用你的新密码登录了。

在windows 2003 64位系统php运行报错:1%不是有效的win32应用程序解决

在windows 2003 64位系统php运行报错:1%不是有效的win32应用程序解决

问题一:php运行报错:1% 不是有效的 win32 应用程序
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

问题二: 网页报错:Service Unavailable
经过上面的操作后,以为大功告成了,其实不然。访问网站竟然又报错:Service Unavailable。
解决方法如下:
1)进入命令提示符:开始->运行 cmd
2)执行脚本:
%SYSTEMROOT%\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i
说明:%SYSTEMROOT%\表示系统目录,一般是“C:\WINDOWS\”;v1.1.4322是默认.net版本,你也可以改为“v2.0.50727”等其他版本,关键是不要写错路径名,否则执行不成功。

thinkphp的nginx配置pathinfo模式,适用3.2 5.0

tp-nginx-config

server
{
# 适用于 thinkphp 3.2 thinkphp 5.0
# pathinfo 模式
# 模块/控制器/方法/参数
# 3.2 使用方法 /home/index/index/params
# 5.0 使用方法 /index/index/index/params
listen 80;
server_name tp;#mod this line
index index.php index.html;
root /tpdir; #mod this line

location / {
index index.php index.htm;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000; #mod this line
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
if ($fastcgi_script_name ~ “^(.+?\.php)(/.+)$”) {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
}

}

dedecms 获取分页后的页面地址 arcurl2

{dede:field name=’arcurl’ /} 只能获得当前地址的,但是分页获取不到

{dede:field name=’arcurl2′ /} 我设置修改  include\arc.archives.class.php

$this->Fields[‘arcurl2’] = substr($this->Fields[‘arcurl’],0,-5) . “_” . $i . substr($this->Fields[‘arcurl’],-5) ;