SpeedPHP框架的spController提供了jump、success、error等多种跳转模式。

直接跳转jump

在控制器中,直接$this->jump(URL地址);就可以跳转到某个URL地址上了。如:

$this->jump(spUrl('main', 'index')); // 跳转到首页
$this->jump("http://speedphp.com"); // 跳转到speedphp.com

操作成功提示和失败提示

成功提示和失败提示提示是基本相同的。 1. 之所以要有这两个几乎一样的方法,是方便开发者自行继承以制作更精美的操作成功和失败提示。

2. 开发者可以通过继承来覆盖这两个方法。

3. 两个方法默认是弹出浏览器提示框显示内容,然后再跳转到目标URL地址

if( $_SESSION['username'] ){
	$this->success('您是本站用户', spUrl('user', 'index')); // 本站用户将提示并跳转到用户中心
}else{
	$this->error('请先登录', spUrl('main', 'login')); // 没有登录则跳转到登录页面
}

speedphp 模板标签 {if},{elseif},{else}

{if},{elseif},{else}

{if},{elseif},{else}

Smarty的{if}条件判断和PHP的if 非常相似,只是增加了一些特性。 每个{if}必须有一个配对的{/if}. 也可以使用{else}{elseif}. 全部的PHP条件表达式和函数都可以在if内使用,如||, or, &&, and, is_array(), 等等.

如果开启了安全机制,那么只有在$php_functions设置允许的PHP函数才能使用。 参见安全机制

下面是可用的运算符列表,使用中都会放到元素的中间并且用空格分隔。 注意列表中[方括号]的是可选的,而且还会列出对应PHP的表达式。

运算符 别名 语法示例 含义 对应PHP语法
== eq $a eq $b 等于 ==
!= ne, neq $a neq $b 不等于 !=
> gt $a gt $b 大于 >
< lt $a lt $b 小于 <
>= gte, ge $a ge $b 大于等于 >=
<= lte, le $a le $b 小于等于 <=
=== $a === 0 绝对等于 ===
! not not $a 非 (一元运算) !
% mod $a mod $b 取模 %
is [not] div by $a is not div by 4 取模为0 $a % $b == 0
is [not] even $a is not even [非] 取模为0 (一元运算) $a % 2 == 0
is [not] even by $a is not even by $b 水平分组 [非] 平均 ($a / $b) % 2 == 0
is [not] odd $a is not odd [非] 奇数 (一元运算) $a % 2 != 0
is [not] odd by $a is not odd by $b [非] 奇数分组 ($a / $b) % 2 != 0

Example 7.44. {if} 表达式

{if $name eq 'Fred'}
    Welcome Sir.
{elseif $name eq 'Wilma'}
    Welcome Ma'am.
{else}
    Welcome, whatever you are.
{/if}

{* an example with "or" logic *}
{if $name eq 'Fred' or $name eq 'Wilma'}
   ...
{/if}

{* same as above *}
{if $name == 'Fred' || $name == 'Wilma'}
   ...
{/if}


{* parenthesis are allowed *}
{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
   ...
{/if}


{* you can also embed php function calls *}
{if count($var) gt 0}
   ...
{/if}

{* check for array. *}
{if is_array($foo) }
   .....
{/if}

{* check for not null. *}
{if isset($foo) }
   .....
{/if}


{* test if values are even or odd *}
{if $var is even}
   ...
{/if}
{if $var is odd}
   ...
{/if}
{if $var is not odd}
   ...
{/if}


{* test if var is divisible by 4 *}
{if $var is div by 4}
   ...
{/if}


{*
  test if var is even, grouped by two. i.e.,
  0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc.
*}
{if $var is even by 2}
   ...
{/if}

{* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *}
{if $var is even by 3}
   ...
{/if}


Example 7.45. {if} 的更多例子

 
{if isset($name) && $name == 'Blog'}
     {* do something *}
{elseif $name == $foo}
    {* do something *}
{/if}

{if is_array($foo) && count($foo) > 0}
    {* do a foreach loop *}
{/if}

PHP的json_encode中文被转码的问题

在php5.2中做json_encode的时候。中文会被unicode编码,
php5.3加入了options参数,
5.4以后才加入JSON_UNESCAPED_UNICODE,这个参数,不需要做escape和unicode处理。
所以在5.4之前都需要对中文做个处理
5.4里面的处理

Php代码  收藏代码
  1. json_encode($str, JSON_UNESCAPED_UNICODE);

5.4之前,有两种方法处理
方法1.

Php代码  收藏代码
  1. function encode_json($str){
  2.     $code = json_encode($str);
  3.     return preg_replace(“#\\\u([0-9a-f]+)#ie”“iconv(‘UCS-2’, ‘UTF-8’, pack(‘H4’, ‘\\1’))”$code);
  4. }

方法1.在实际应用中有个问题,部分字符会掉,不止为何,如字符串:”日期11.2″会被变成”日期.2″

方法2.
先对需要处理的做urlencode处理,然后json_encode,最后做urldecode处理

Php代码 收藏代码
  1. function encode_json($str) {
  2. return urldecode(json_encode(url_encode($str)));
  3. }
  4. /**
  5.  * 
  6.  */
  7. function url_encode($str) {
  8. if(is_array($str)) {
  9. foreach($str as $key=>$value) {
  10. $str[urlencode($key)] = url_encode($value);
  11.         }
  12.     } else {
  13. $str = urlencode($str);
  14.     }
  15. return $str;
  16. }

http://scnjl.iteye.com/blog/1724447

jquery的checked以及disabled

$(".btn1").click(function(){
  $(":checked").hide();
});


1、获取单个checkbox选中项(三种写法)
$(“input:checkbox:checked”).val()
或者
$(“input:[type=’checkbox’]:checked”).val();
或者
$(“input:[name=’ck’]:checked”).val();

2、 获取多个checkbox选中项
$(‘input:checkbox’).each(function() {
if ($(this).attr(‘checked’) ==true) {
alert($(this).val());
}
});

3、设置第一个checkbox 为选中值
$(‘input:checkbox:first’).attr(“checked”,’checked’);
或者
$(‘input:checkbox’).eq(0).attr(“checked”,’true’);

4、设置最后一个checkbox为选中值
$(‘input:radio:last’).attr(‘checked’, ‘checked’);
或者
$(‘input:radio:last’).attr(‘checked’, ‘true’);

5、根据索引值设置任意一个checkbox为选中值
$(‘input:checkbox).eq(索引值).attr(‘checked’, ‘true’);索引值=0,1,2….
或者
$(‘input:radio’).slice(1,2).attr(‘checked’, ‘true’);

6、选中多个checkbox同时选中第1个和第2个的checkbox
$(‘input:radio’).slice(0,2).attr(‘checked’,’true’);

7、根据Value值设置checkbox为选中值
$(“input:checkbox[value=’1′]”).attr(‘checked’,’true’);

8、删除Value=1的checkbox
$(“input:checkbox[value=’1′]”).remove();

9、删除第几个checkbox
$(“input:checkbox”).eq(索引值).remove();索引值=0,1,2….
如删除第3个checkbox:
$(“input:checkbox”).eq(2).remove();

10、遍历checkbox
$(‘input:checkbox’).each(function (index, domEle) {
//写入代码
});

11、全部选中
$(‘input:checkbox’).each(function() {
$(this).attr(‘checked’, true);
});

12、全部取消选择
$(‘input:checkbox’).each(function () {
$(this).attr(‘checked’,false);
});

下面只提到checked,其实disabled在jquery里的用法和checked是一模一样的

下边两种写法没有任何区别 只是少了些代码而已…

———————————————————–
<input id=”cb1″ type=”checkbox” checked />
<input id=”cb2″ type=”checkbox” checked=”checked” />

————————————————————–

jquery判断checked的三种方法:

.attr(‘checked’):   //看版本1.6+返回:”checked”或”undefined” ;1.5-返回:true或false
.prop(‘checked’): //16+:true/false
.is(‘:checked’):    //所有版本:true/false//别忘记冒号哦

jquery赋值checked的几种写法:

所有的jquery版本都可以这样赋值:

// $(“#cb1”).attr(“checked”,”checked”);
// $(“#cb1”).attr(“checked”,true);

jquery1.6+:prop的4种赋值:

// $(“#cb1”).prop(“checked”,true);//很简单就不说了哦
// $(“#cb1”).prop({checked:true}); //map键值对
// $(“#cb1”).prop(“checked”,function(){
return true;//函数返回true或false
});

//记得还有这种哦:$(“#cb1”).prop(“checked”,”checked”);

更多参考:http://api.jquery.com/prop/

上代码 大家可以随便测试:(你是懒人么-_-)

jquery1.6以后才支持prop的哦

新建一个text复制内容进去  后缀名改成html

复制代码
<html>
    <head>
        <title>测试</title>
        <style type="text/css">

        </style>
        <!--1.62可以修改1.42  1.52  1.7来测试-->
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
        <script type="text/javascript">
        $(function(){
            //判断checked
       //    var a=$("#cb1").attr('checked'); //看版本1.6+返回:"checked"或"undefined" ;1.5-返回:true或false
       //    var b=$("#cb1").prop('checked'); //1.6+:true/false
       var c=$("#cb1").is(':checked');  //所有版本:true/false
       //    alert(a);        
       //    alert(b);
            alert(c);

            //赋值   前两个所有的jquery版本都支持 prop只有jquery1.6+支持
       //    $("#cb1").attr("checked","checked");//1.5-
       //    $("#cb1").attr("checked",true);//1.5-
       //   $("#cb1").prop("checked","checked");//1.6+(整理的时候把这个忘记啦)
       //    $("#cb1").prop("checked",true);//1.6+
       //    $("#cb1").prop({checked:true});//1.6+
       //    $("#cb1").prop("checked",function(){
       //        return  true;//1.6+
       //    });                
        })();
    
        </script>
    </head>
    <body>
        <!--赋值的时候记得去掉checked-->
    <input id="cb1" type="checkbox" checked />
    <input id="cb2" type="checkbox" checked="checked"/>
    </body>
</html>
http://www.cnblogs.com/0banana0/archive/2011/11/16/2251855.html
http://www.jb51.net/article/46469.htm

speedphp 常用标签 foreach if

<select name=”company_id” id=”” class=”form-select” >
<option value=””>请选择快递类型</option>
<{foreach item=item name=user from=$companylist}>
<option
<{if $item.company_id ==$courier.company_id}>
selected=”selected”
<{/if}>
value=”<{$item.company_id}>”>
<{$item.company_name}>
</option>
<{/foreach}>
</select>

 

 

已解决 请问微信支付V3,在支付成功后通过哪个回调的值更新订单状态呢?


<?php
ini_set('date.timezone','Asia/Shanghai');
// error_reporting(E_ERROR);
error_reporting(0);
require_once "WxPay.Api.php";
require_once 'log.php';
require_once("../../includes/mysql.class.php");
//初始化日志
// $logHandler= new CLogFileHandler("./logs/".date('Y-m-d').'.log');
// $log = Log::Init($logHandler, 15);
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
//禁止引用外部xml实体
$successdata=xmlToArray($xml);
// file_put_contents('log.txt',json_encode($successdata));
function xmlToArray($xml)
{
//将XML转为array
$array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $array_data;
}
// function printf_info($data)
// {
// foreach($data as $key=>$value){
// echo "<font color='#f00;'>$key</font> : $value <br/>";
// }
// }
$out_trade_no=$successdata['out_trade_no'];

if(!empty($out_trade_no)){

$input = new WxPayOrderQuery();
$input->SetOut_trade_no($out_trade_no);
$result=WxPayApi::orderQuery($input);
// printf_info($result);
if(array_key_exists("return_code", $result)&& array_key_exists("result_code", $result)&& $result["return_code"] == "SUCCESS"&& $result["result_code"] == "SUCCESS")
{
//file_put_contents('log.txt','支付成功'.$out_trade_no.$pid.$tel.$numbers.$poss);
//支付成功
//改变订单状态
$sql="update pai_deposit set status='1',paytime='".date("Y-m-d H:i:s")."' where out_trade_no='{$out_trade_no}'";
// file_put_contents('log.txt',$sql);
$con=new connection();
$result=$con->Query($sql);
echo "success";
$openid=$successdata['openid'];
$total_fee=$successdata['total_fee']*0.01;
$attach=$successdata['attach'];
$sql="select * from pai_deposit where out_trade_no='{$out_trade_no}'";
$result_deposit=$con->QueryArray($sql);

$sql="select * from paipro where id='".$result_deposit[0]['pid']."'";
$result_pro=$con->QueryArray($sql);

sendmsg($openid,$total_fee,$result_pro[0]['title'],$out_trade_no,$result_deposit[0]['tel']);
exit();
}

echo 'fail';
exit();
}
else
{
//file_put_contents('log.txt','支付失败2'.$out_trade_no);
echo 'fail';
exit();
}
function sendmsg($wxid,$total,$title,$order_id,$tel)
{

$access_token=new_access_token();
$url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$access_token;

$w_title="付款成功通知";
// $w_url='http://'.$_SERVER['HTTP_HOST']."/mobile/user.php?act=fenxiao1&wxid=".$wxid;
$w_url='';

$rtime=date("Y-m-d H:i:s");
$w_description="订单编号:{$order_id}\r\n保证金:¥{$total}元\r\n商品详情:{$title}\r\n联系电话:{$tel}\r\n付款时间:{$rtime}";
$post_msg = '{
"touser":"'.$wxid.'",
"msgtype":"news",
"news":{
"articles": [
{
"title":"'.$w_title.'",
"description":"'.$w_description.'",
"url":"'.$w_url.'",
"picurl":"'.$w_picurl.'"
}
]
}
}';
$ret_json = curl_grab_page($url, $post_msg);

$ret = json_decode($ret_json);

if($ret->errmsg != 'ok')
{

$access_token = new_access_token();
$url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$access_token;
$ret_json = curl_grab_page($url, $post_msg);
$ret = json_decode($ret_json);
}

}
function curl_grab_page($url, $data, $proxy = '', $proxystatus = '', $ref_url = '') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($proxystatus == 'true') {
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
if (!empty($ref_url)) {
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_REFERER, $ref_url);
}
if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) {
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
ob_start();
return curl_exec ($ch);
ob_end_clean();
curl_close ($ch);
unset($ch);
}

function new_access_token() {


$appid = 'wx52dc8c34087d';
$appsecret ='d70878f040f08fa55766bf6d';

$time = time();
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
$ret_json = curl_get_contents($url);
$ret = json_decode($ret_json);

return $ret->access_token;


}

function curl_get_contents($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
curl_setopt($ch, CURLOPT_REFERER, _REFERER_);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) {
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
?>

ThinkPHP Where 条件中使用表达式

Where 条件表达式格式为:

$map['字段名']  = array('表达式', '操作条件');

其中 $map 是一个普通的数组变量,可以根据自己需求而命名。上述格式中的表达式实际是运算符的意义:

ThinkPHP运算符 与 SQL运算符 对照表
TP运算符 SQL运算符 例子 实际查询条件
eq = $map[‘id’] = array(‘eq’,100); 等效于:$map[‘id’] = 100;
neq != $map[‘id’] = array(‘neq’,100); id != 100
gt > $map[‘id’] = array(‘gt’,100); id > 100
egt >= $map[‘id’] = array(‘egt’,100); id >= 100
lt < $map[‘id’] = array(‘lt’,100); id < 100
elt <= $map[‘id’] = array(‘elt’,100); id <= 100
like like $map<‘username’> = array(‘like’,’Admin%’); username like ‘Admin%’
between between and $map[‘id’] = array(‘between’,’1,8′); id BETWEEN 1 AND 8
not between not between and $map[‘id’] = array(‘not between’,’1,8′); id NOT BETWEEN 1 AND 8
in in $map[‘id’] = array(‘in’,’1,5,8′); id in(1,5,8)
not in not in $map[‘id’] = array(‘not in’,’1,5,8′); id not in(1,5,8)
and(默认) and $map[‘id’] = array(array(‘gt’,1),array(‘lt’,10)); (id > 1) AND (id < 10)
or or $map[‘id’] = array(array(‘gt’,3),array(‘lt’,10), ‘or’); (id > 3) OR (id < 10)
xor(异或) xor 两个输入中只有一个是true时,结果为true,否则为false,例子略。 1 xor 1 = 0
exp 综合表达式 $map[‘id’] = array(‘exp’,’in(1,3,8)’); $map[‘id’] = array(‘in’,’1,3,8′);

补充说明

  • 同 SQL 一样,ThinkPHP运算符不区分大小写,eq 与 EQ 一样。
  • between、 in 条件支持字符串或者数组,即下面两种写法是等效的:
    $map['id']  = array('not in','1,5,8');
    $map['id']  = array('not in',array('1','5','8'));
    

exp 表达式

上表中的 exp 不是一个运算符,而是一个综合表达式以支持更复杂的条件设置。exp 的操作条件不会被当成字符串,可以使用任何 SQL 支持的语法,包括使用函数和字段名称。

exp 不仅用于 where 条件,也可以用于数据更新,如:

$Dao = M("Article");

// 构建 save 的数据数组,文章点击数+1
$data['id'] = 10;
$data['counter'] = array('exp','counter+1');

// 根据条件保存修改的数据
$User->save($data);

Win10怎么找到远程桌面,Win10远程桌面在哪里 连接服务器

在Win10系统下使用“WIN+R”组合快捷键打开运行对话框,然后输入“mstsc”,点击确定。点击确定后,可以快速的找到Win10的远程桌面并打开,在远程桌面输入地址,点击连接就可以连接远程了。

 

有些情况下可能会出现问题,小编配置的时候就出现链接不成功的情况。

可能问题及解决方法:

1、3389端口没有开通[开始]菜单——设置——控制面板——系统——远程属性——勾起:允许用户远程连接到此计算机。

2、服务没有启用[开始]菜单——设置——控制面板——管理工具——服务——找到:Terminal Services服务:更改成“启动”状态。

3、防火墙如果端口和服务都开通了,还是不能连接,那么就有可能是被防火墙禁止了;关闭防火墙 或者 添加3389端口并允

下面是WindowsXP自带的防火墙: [开始]菜单——设置——控制面板——Windows防火墙——例外:勾选“远程桌面

小编遇到的就是第一种情况。

win7电脑连接win10的远程桌面,有时会出现可连接,但一直无法进入桌面,只转圈圈,然后断开连接,主要原因是连接超时

解决方法
win10电脑 开始-运行-输入gpedit.msc 进入组策略
依次进入
计算机配置- 管理模板-Windows组件-远程桌面服务-远程桌面会话主机-会话时间限制
win7连接win10远程桌面

 

设置已中断会话的时间限制,启用,并将时间设为从不
win7连接win10远程桌面

达到时间限制时终止会话,禁用
win7连接win10远程桌面
正常情况下,就不会自动断开,会一直等待连接成功

 

baocms thinkphp iis可用的重写插件去除隐藏index.php及规则 重写url pathinfo Apache Nginx

可以通过URL重写隐藏应用的入口文件index.php,下面是相关服务器的配置参考:

[ Apache ]

  1. httpd.conf配置文件中加载了mod_rewrite.so模块
  2. AllowOverride None 将None改为 All
  3. 把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下

 

<ol class="linenums">
 	<li class="L0"><code><span class="tag"><IfModule</span> <span class="atn">mod_rewrite</span><span class="pln">.</span><span class="atn">c</span><span class="tag">></span></code></li>
 	<li class="L1"><code><span class="pln"> RewriteEngine on</span></code></li>
 	<li class="L2"><code><span class="pln"> RewriteCond %{REQUEST_FILENAME} !-d</span></code></li>
 	<li class="L3"><code><span class="pln"> RewriteCond %{REQUEST_FILENAME} !-f</span></code></li>
 	<li class="L4"><code><span class="pln"> RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]</span></code></li>
 	<li class="L5"><code><span class="tag"></IfModule></span></code></li>
</ol>

因为我部署在apache上面,需要httpd.conf配置文件中找到LoadModule rewrite_module modules/mod_rewrite.so去掉前面的#,找到AllowOverride None改为AllowOverride All。

现在访问localhost/product有效,但是__APP__或者__URL__或者U获取出来的路径包含有index.php,也就是为localhost/index.php,原来还有一步,需要在conf/config.php里面修改或者添加’URL_MODEL’=>2,

而因为我尝试部署的是基于ThinkPHP的conist企业版2.0,在config.php里竟然有这么一个配置’URL_MODEL’ =>C(‘TOKEN.false_static’),,而TOKEN.false_static的值在初始化的时候被设置为了1,所以。。。模式一直还是1,PATHINFO模式。

在新浪SAE部署,不支持.htaccess,只支持其自有的配置文件config.yaml,所以要在config.yaml添加下面这段重写格式代码:

handle:
- rewrite: if(!is_dir() && !is_file() && path~"^(.*)$") goto "index.php/$1"

[ IIS ]

如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容:

  1. RewriteRule (.*)$ /index\.php\?s=$1 [I]

在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:

  1. <rewrite>
  2. <rules>
  3. <rule name="OrgPage" stopProcessing="true">
  4. <match url="^(.*)$" />
  5. <conditions logicalGrouping="MatchAll">
  6. <add input="{HTTP_HOST}" pattern="^(.*)$" />
  7. <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  8. <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  9. </conditions>
  10. <action type="Rewrite" url="index.php/{R:1}" />
  11. </rule>
  12. </rules>
  13. </rewrite>

 

我的配置

httpd.conf文件或httpd.ini(不同环境配置文件也不一样)我的配置文件在wwwroot平级other文件夹

others下线

RegistrationName=Longshui Chen
RegistrationCode=7Z3NU-7MAP5-JZDPH-PR9GK
[ISAPI_Rewrite]
CacheClockRate 3600
RepeatLimit 32

#thinkphp
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d

#RewriteRule (.*)$ /index\.php\?s=$1 [I]

RewriteRule (.*)$ /index\.php\?s=$1 [QSA,PT,L]

 

参考内用

 

RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*).html$ index.php/$1%{QUERY_STRING} [L]

[ Nginx ]

有专门讲解的

LNMP 配置NGINX 支持THINKPHP PATHINFO模式

在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf中配置转发规则实现:

  1. location / { // …..省略部分代码
  2. if (!-e $request_filename) {
  3. rewrite ^(.*)$ /index.php?s=$1 last;
  4. break;
  5. }
  6. }

其实内部是转发到了ThinkPHP提供的兼容模式的URL,利用这种方式,可以解决其他不支持PATHINFO的WEB服务器环境。

如果你的ThinkPHP安装在二级目录,Nginx的伪静态方法设置如下,其中youdomain是所在的目录名称。

  1. location /youdomain/ {
  2. if (!-e $request_filename){
  3. rewrite ^/youdomain/(.*)$ /youdomain/index.php?s=$1 last;
  4. }
  5. }

原来的访问URL:

http://serverName/index.php/模块/控制器/操作/[参数名/参数值...]

设置后,我们可以采用下面的方式访问:

http://serverName/模块/控制器/操作/[参数名/参数值...]

 

参考文献

http://www.thinkphp.cn/topic/14902.html

http://www.bitscn.com/pdb/php/201407/236107.html

http://document.thinkphp.cn/manual_3_2.html#url_rewrite