首页 > 编程技术 > php

301重定向代码(php apache)

发布时间:2016-11-25 15:07

使用 HTACCESS 文件 添加吧,这是代码

Options +FollowSymLinks

RewriteEngine on

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

RewriteRule ^(.*)$ http://www.111cn.net/$1 [L,R=301]

php教程写法

<?
  Header( "HTTP/1.1 301 Moved Permanently" );
  Header( "Location: www.111cn.net" );
  ?>

不带index.php文件

<?php
$qurl = $_SERVER['REQUEST_URI'];
//获取url,伪静态地址也能完整取得
$qurl = str_replace("/index.php","",$qurl);
if ($qurl!=""){
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.111cn.net");
exit();}
?>

环境变量:$_ENV 注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_ENV_VARS。 在解析器运行时,这些变量从环境变量转变为 PHP 全局变量名称空间(namespace)。它们中的许多都是由 PHP 所运行的系统决定。完整的列表是不可能的。请查看系统的文档以确定其特定的环境变量。

环境变量:$_ENV
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_ENV_VARS。

在解析器运行时,这些变量从环境变量转变为 PHP 全局变量名称空间(namespace)。它们中的许多都是由 PHP 所运行的系统决定。完整的列表是不可能的。请查看系统的文档以确定其特定的环境变量。

其它环境变量(包括 CGI 变量),无论 PHP 是以服务器模块或是以 CGI 处理方式运行,都在这里列出了。

这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_ENV; 来访问它,就如同使用 $HTTP_ENV_VARS 一样。

$HTTP_ENV_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_ENV_VARS 和 $_ENV 是不同的变量,PHP 处理它们的方式不同)。

如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_ENV 和 $HTTP_ENV_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。

看个实例

<?php教程
echo 'My username is ' .$_ENV["USER"] . '!';
?>

假设 "bjori" 运行此段脚本

以上例程的输出类似于:

My username is bjori!

实例2

<?php
if (isset($_ENV["HOSTNAME"]))
    $MachineName = $_ENV["HOSTNAME"];
else if  (isset($_ENV["COMPUTERNAME"]))
    $MachineName = $_ENV["COMPUTERNAME"];
else $MachineName = "";
?>

器的运行环境导入到 PHP 的全局命名空间。很多是由支持 PHP 运行的 Shell 提供的,并且不同的系统很可能运行着不同种类的 Shell,所以不可能有一份确定的列表。请查看你的 Shell 文档来获取定义的环境变量列表。

其他环境变量包含了 CGI 变量,而不管 PHP 是以服务器模块还是 CGI 处理器的方式运行。

$HTTP_ENV_VARS 包含相同的信息,但它不是一个超全局变量。 (注意 $HTTP_ENV_VARS 和 $_ENV 是不同的变量,PHP 处理它们的方式不同

今天处理了一个很小的问题。
需求是这样的,从周一到周日只能看到上周一到上周日的数据。
这里直接从数据库教程里根据 date 字段查询 范围即可。
但需要PHP生成 开始日期和结束日期。

最开始,我直接这么处理。

$start_date = date('Y-m-d' , strtotime("-2 week monday"));
$end_date = date('Y-m-d' , strtotime("$start_date +6 day"));
假如日期是 2011-07-19,$start_date= 2011-07-11 这样处理没有问题。
如果日期是 2011-07-18 ,$start_date 则会等于 2011-07-04,还活在上周。

于是换了种方法

$getWeekDay = date("w");
$startDay = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - $getWeekDay + 1 - 7, date("Y")));
$endDay = date("Y-m-d", strtotime("+6 day $startDay"));
假如日期是 2011-07-19,$start_date= 2011-07-11 这样处理没有问题,和我们期望的一样。
如果日期是 2011-07-24,我们期望的 $start_date 是 2011-07-11,但实际返回的是 2011-07-18。

不得已,我再改了下方法

$getWeekDay = date("N") ;
$startDay = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - $getWeekDay + 1 - 7, date("Y")));
$endDay = date("Y-m-d", strtotime("+6 day $startDay"));
这下就OK 了。


用在函数前,使不显示错误信息。
前面的“@”就能把错误显示给抑制住,也就是不会显示错误,然后再抛出异常,显示自己定义的异常处理,添加这个只是为了让浏览者不看到,不友好的页面,并不能抑制住错误,只能抑制显示错误

function foo($n)
{
    $result = 1/$n;
    return $result;
}
echo @foo(0); // 函数中会产生除 0 错误,但加上 @ 后并不显示该错误。
echo "end"; // 输出 end
# 注释符号

同 // 一样,# 是单行注释符(多行注释符为 /* */)。

 

看个数据库教程实例

function db_connect()//连接数据库
{
@$db =mysql教程_connect('localhost','root','test');
if(!$db)
throw new Exception('连接数据库失败!请重试!');
mysql_select_db('book');
return $db;
}

获取前 n 天或者后 n 天的日期
 
下面举了三个实现有计算n天以前的日期和获取指定日期前的N天,最后还有个js代码。
$rs['expire_long']=5;
echo date("Y-m-d H:i:s",strtotime('-'.$rs['expire_long'].' days',strtotime('2011-01-01 10:28:18')));


<?  
//========计算n天以前的日期subolddate()=====================  
function   subolddate($day){  
$now=time();  
$m=$day*24*60*60;  
$diff=$now-$m;  
$oldday=date( "Y-m-d ",$diff);  
echo   $day. "天以前是 ".$oldday;  
}  
//========================================================  
subolddate(5);  
?> ?

js实现方法

<script type="text/网页特效">
function showdate(n)
{
 var uom = new Date(new Date()-0+n*86400000);
 uom = uom.getFullYear() + "-" +  (uom.getMonth()+1) + "-" + uom.getDate();
 return uom;
}

window.alert("今天是:"+showdate(0));
window.alert("昨天是:"+showdate(-1));
window.alert("明天是:"+showdate(1));
window.alert("10天前是:"+showdate(-10));
window.alert("5天后是:"+showdate(5));
</script>

标签:[!--infotagslink--]

您可能感兴趣的文章: