精华内容
下载资源
问答
  • php实现伪静态
    2021-03-25 11:03:05

    伪静态主要是为了SEO而存在的一种技术,又名URL重写。至于为什么要实现伪静态这里就不详细解释了。一般实现伪静态技术都是使用apache服务的mod_rewrite功能,通过在名为.htaccess的文件里面书写一些rewrite规则的正则来实现URL重写技术,这种技术本篇不做详解,下面以程序为例主要讲一下利用PHP程序实现伪静态的方法。

    下面就是实现伪静态的php函数

    /*

    功能:PHP伪静态化页面的实现

    */

    function mod_rewrite(){

    global $_GET;

    $nav=$_SERVER['REQUEST_URI'];

    $script_name=$_SERVER['SCRIPT_NAME'];

    $nav=substr(ereg_replace("^$script_name",'',urldecode($nav)),1);

    $nav=preg_replace('/.htm(l){0,1}$/i','',$nav);//这句是去掉尾部的.html或.htm

    $vars=strpos($nav,'/')!==false?explode('/',$nav):array();

    $nav=count($vars);

    if($nav){

    for($i=0;$i

    $_GET[$vars[$i]]=$vars[$i+1];

    }

    }

    return $_GET;

    }

    例如对于如下这样的链接地址:

    http://www.phpernote.com/index.php/controller/user/action/login.html

    经过函数处理后,我们就可以得到他的链接原型了:

    http://www.phpernote.com/index.php?controller=user&action=login

    该函数的具体用法如下:

    mod_rewrite();

    $yearn=$_GET["controller"];//结果为'user'

    $action=$_GET["action"];//结果为'login'

    echo '

    ';

    print_r($_GET);

    至于具体情况,读者可根据自己的情况来吧,这里就不多说了。

    以上通过php程序代码实现的伪静态技术唯一不够完美的是URL里面还是包含有.php这样的字符,让人有点不爽,不过对于搜索引擎来说,这个不算是个缺陷,他就是一个静态文件。

    更多相关内容
  • PHP伪静态的使用主要是为了隐藏传递的参数名,下面给大家介绍php实现伪静态的方法,对php实现伪静态相关知识感兴趣的朋友一起学习吧
  • 不用mod_rewrite直接用php代码实现伪静态效果,大家看后就会发现php真的很方便
  • 一、根据$_SERVER['PATH_INFO']来操作实现。示例:http://127.0.0.1/show_new.php/look-id-1.shtmlecho $_SERVER['PATH_...1、index.php复制代码 代码示例:/*** php伪静态* www.jbxue.com*/$conn=mysql_connect("lo...

    一、根据$_SERVER['PATH_INFO']来操作实现。

    示例:http://127.0.0.1/show_new.php/look-id-1.shtmlecho $_SERVER['PATH_INFO'] 的输出为:/look-id-1.shtml。

    1、index.php

    复制代码 代码示例:

    /**

    * php伪静态

    * www.jbxue.com

    */

    $conn=mysql_connect("localhost","root","root")or dir("连接失败");

    mysql_select_db("tb_demo",$conn);

    $sql="select * from news";

    $res=mysql_query($sql);

    header("content-type:text/html;charset=utf-8");

    echo "

    新闻列表

    ";

    echo "添加新闻


    ";

    echo "

    echo "

    id标题查看详情修改新闻";

    while($row=mysql_fetch_assoc($res)){

    echo "

    {$row['id']}{$row['title']} 查看详情 修改页面";

    }

    //上面的红色的地址本来该是show_news.php?act=look&id={$row['id']}

    echo "

    ";

    //关闭资源

    mysql_free_result($res);

    mysql_close($conn);

    ?>

    2、show_new.php页面

    复制代码 代码示例:

    header("Content-type:text/html;charset=utf-8");

    $conn=mysql_connect("localhost","root","root");

    mysql_select_db("tb_demo",$conn);

    mysql_query("set names utf8");

    $pa = $_SERVER['PATH_INFO'];

    //$pa 打印出来的值是 /look-id-1.html

    //通过正则表达式匹配获取的url地址

    if(preg_match('/^\/(look)-(id)-([\d])\.shtml$/',$pa,$arr)){

    $act = $arr[1]; //这个是请求的look方法

    $id = $arr[3]; //这个是获取的id 值

    $sql="select * from news where id= $id";

    $res=mysql_query($sql);

    $res = mysql_fetch_assoc($res);

    echo $res['title']."


    ".$res['content'];

    }else{

    echo "url地址不合法";

    }

    mysql_close($conn);

    ?>

    二、根据配置.htaccess来实现

    先说下.htaccess文件怎么创建吧,在网站根目录下建立个记事本然后双击打开点击另存为 文件名写成.htaccess ,保存类型选择所有文件,编码选择utf-8的编码好的这是你就在目录看到这个.htaccess文件了。

    首先,在apache 开启mod_rewrite.so,AllowOverride None 这里有两处 替换为 AllowOverride All。

    比如href 地址写成 one_new-id-1.shtml //这个意思是one_new.php?id=1

    这里的.htaccess这样写:

    复制代码 代码示例:

    #写你的rewrite规则

    RewriteEngine On

    # 可以配置多个规则,匹配的顺序是从上到下

    RewriteRule one_new-id-(\d+)\.shtml$ one_new.php?id=$1 //这里的$1 代表的是第一个参数啊

    RewriteRule abc_id(\d+)\.html$ error.php

    #设置404错误

    #ErrorDocument 404 /error.php

    在one_new.php 页面echo $_GET['id'] 肯定会输出 id的值了。

    就介绍这些吧,php实现伪静态还是很简单的,希望大家多多实践,写出更加灵活而轻便的伪静态规则。

    展开全文
  • 本文实例讲述了使用纯php代码实现页面伪静态的方法。分享给大家供大家参考。具体如下: if(1==URLROLE){ $nav=$_SERVER["REQUEST_URI"]; $script_name=$_SERVER["SCRIPT_NAME"]; $nav1=ereg_replace(".html","",...
  • 大家也许对PHP伪静态页面还比较陌生,今天我们就向大家具体讲解PHP实现伪静态化页面的具体代码,让大家对对PHP伪静态有一个更加深入的了解。PHP实现伪静态化页面方法一:在你的程序初始化时使用如下代码:$...

    大家也许对PHP伪静态页面还比较陌生,今天我们就向大家具体讲解PHP实现伪静态化页面的具体代码,让大家对对PHP伪静态有一个更加深入的了解。

    PHP实现伪静态化页面方法一:

    在你的程序初始化时使用如下代码:

    $Php2Html_FileUrl= $_SERVER["REQUEST_URI"];

    $Php2Html_UrlString=str_replace("/", "", strrchr($Php2Html_FileUrl, "/"));

    $Php2Html_UrlQueryStrList=explode("@", $Php2Html_UrlString);

    foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)

    {

    $Php2Html_TmpArray=explode("|", $Php2Html_UrlQueryStr);

    $_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];

    }

    echo '假静态:$_GET变量
    ';

    print_r($_GET);

    ?>

    然后php中调用$_GET变量就像平常一样了。

    连接使用方式:

    ****.php/param1|1234@param2|4321

    和****.php?param1=1234¶m2=4321一样。

    PHP实现伪静态化页面方法二:通过URL Rewrite实现链接静态化

    我们知道搜索引擎对于静态页面是非常友好的,因此很多网站通过生成静态页面等手段方便爬虫抓取自己网站的内容。但是有时候一些应用并不适合全部静态化,比如数据变化非常大的论坛/贴吧系统,这时候我们可以通过URL重写来实现链接的伪静态化,即网站对外使用静态化的链接,而内部实际上仍然使用动态页面的 URL形式。比如像这样一个链接:http://www.ci123.com/abc.php?action=a&id=1,我们可以改写成http://www.ci123.com/abc/a/1.html的形式。这是搜索引擎优化最重要的内容之一,它还有一个额外的好处,可以使页面有一个***链接,即便以后网站系统内部链接有变化,通过适当改变Rewrite规则就可以保证原先的外部URL一直有效。

    下面介绍2种简单的Apache+PHP下实现URL重写的方法,***种适合有服务器配置权限的用户,第二种适合租用空间的用户,也作为我近期的学习心得的整理。

    1、对于有服务器配置权限的用户,推荐使用Apache的mod_rewrite模块,这里假设已经安装好mod_rewrite模块。打开Apache的配置文件,找到相应主机的部分,添加以下代码:

    RewriteEngine On

    RewriteRule ^/abc/([a-z]+)/([0-9]+).html$ /abc.php?action=$1&id=$2

    然后在shell里执行service httpd reload,让Apache重新载入配置就好了。现在在PHP页面里面我们可以把链接写成 abc/a/1.html的形式,Apache在解析这个 URL的时候会rewrite成abc.php?action=a&id=1的形式,并返回正确的页面。运用正则表达式我们可以实现几乎任何我们想要的链接形式,mod_rewrite模块的功能异常强大,这里只是一个及其简单的应用。

    2、对于租用空间的用户,一般都没有办法修改Apache的配置,这里有个变通的方法,原理是这样的:当要传递参数访问PHP 页面时,正常情况下是通过自动全局变量$_GET来获得,比如上面的链接,在页面里可以通过$_GET['action'] 和 $_GET['id'] 来获得,重写URL后就不行了。现在在每个页面里require一个url_rewrite.php文件,里面代码如下:

    $filename=basename($_SERVER['SCRIPT_NAME']);

    if (strtolower($filename) == "abc.php"){

    if (!empty($_GET[id])){

    $id=intval($_GET[id]);

    $action=intval($_GET[action]);

    }

    else {

    $nav= $_SERVER["REQUEST_URI"];

    $script= $_SERVER["SCRIPT_NAME"];

    $nav=ereg_replace("^$script", "", urldecode($nav));

    $vars=explode("/", $nav);

    $action=intval($vars[1]);

    $id=intval($vars[2]);

    }

    }这样$action和$id也得到了,页面里链接可以写成abc.php/a/1的形式来访问相应页面。

    需要注意的是这种PHP实现伪静态化页面方法效率较***种低,***种方法是在WEB服务器URL解析过程中实现的,而这里是在PHP页面解析过程里实现的,第2种方法只是变通,不得已而为之,要修改链接形式很不方便也不灵活。

    【责任编辑:曹凯 TEL:(010)68476606】

    点赞 0

    展开全文
  • 浅谈PHP实现伪静态

    2021-05-08 03:20:32
    2.在http.conf里面查找Options FollowSymLinks,将后面的...这个时候兵分两路,有http.conf权限的可以自己在http.conf后面添加url rewrite规则如RewriteEngine OnRewriteRule ^(.*)/([0-9]{1,}).html$ $1/page.php?i...

    2.在http.conf里面查找Options FollowSymLinks,将后面的AllowOverride None改成AllowOverride All。

    这个时候兵分两路,有http.conf权限的可以自己在http.conf后面添加url rewrite规则

    RewriteEngine On

    RewriteRule ^(.*)/([0-9]{1,}).html$ $1/page.php?id=$2

    第二路就只好在代码根目录建立.htaccess文件,这个文件建立比较简单,有3种方法,最简单的当然是建立1.htaccess然后记事本打开另存为.htaccess,另外就是cmd下rename和ftp软件修改。

    3.rewrite规则

    看个例子就懂了

    RewriteEngine On

    RewriteRule ^(.*)/([0-9]{1,}).html$ $1/page.php?id=$2

    $是终止符,前面写个正则表达式,$1获取第一个子模式(小括号里面的东东),$2获取第二个子模式东东。

    友情提示 ^是开头,不要忘记加了

    如果有2个参数,也很简单,自行处理。

    也就是说浏览器里面显示的如果是4.html(你的文件里面的链接写成.html的)的话,实际调用的是page.php?id=4,这样浏览器的输入栏都是html,达到了伪静态。

    当然你改写不同正则,显示的url当然就不同了,随你喜欢的该。

    遇见多行的话不要妄自加分号。如下才是对的:

    RewriteEngine On

    RewriteRule ^(.*)/([0-9]{1,}).html$ $1/page.php?id=$2

    RewriteRule ^(.*)/index.html$ $1/index.php

    RewriteRule ^(.*)/wenzhang.html$ $1/wenzhang.php

    RewriteRule ^(.*)/gushi.html$ $1/gushi.php

    RewriteRule ^(.*)/sanwen.html$ $1/sanwen.php

    RewriteRule ^(.*)/zawen.html$ $1/zawen.php

    RewriteRule ^(.*)/shige.html$ $1/shige.php

    RewriteRule ^(.*)/riji.html$ $1/riji.php

    RewriteRule ^(.*)/xiaoshuo.html$ $1/xiaoshuo.php

    RewriteRule ^(.*)/contact.html$ $1/contact.php

    综述就是网址重写引擎和指定一些重写规则.,尝试Faking URL Suffix(伪造URL后缀),看起来很静态化,提高了安全性和SEO友好度。

    4.重启apache。

    windows的httpd.conf很好找,在conf目录(我指的是你如果没用集成包的话)

    Linux在opt/lampp/etc目录里面有httpd.conf(一般linux下推荐用Xampp按照包,安装在opt目录)

    同样进行上面工作restart一下就ok

    login as: root

    Server refused our key

    root@XXXXX.com's password:

    Last login: Thu Jul 21 14:26:26 2011 from 112.65.219.75

    [root@XXXXX ~]# who

    root     pts/0        2011-07-21 14:32 (112.65.219.75)

    [root@XXXXX ~]# /opt/lampp/lampp restart

    Stopping XAMPP for Linux 1.6.4...

    XAMPP: Stopping Apache with SSL...

    XAMPP: Stopping MySQL...

    XAMPP: Stopping ProFTPD...

    XAMPP stopped.

    Starting XAMPP for Linux 1.6.4...

    XAMPP: Starting Apache with SSL (and PHP5)...

    XAMPP: Starting MySQL...

    XAMPP: Starting ProFTPD...

    XAMPP for Linux started.

    稍等就行了。

    5.部分代码指导:

    echo "

    ";

    $i=$row['id'];//数据库表insun4中的id列,为了。。。。

    echo "

    ".$row['title']."";

    //echo "

    ".$row['title']."";

    //echo "

    ".$row['description']."";

    echo "

    ".$row['description']."";

    echo "

    ";

    ?>

    include 'config.php';

    set_time_limit(0);//防止超时显示错误。

    mysql_query("set names'gbk'");//utf8

    //$url = "http://www.jj59.com/";

    $gid = $_GET['id'];

    $query="select * from insun4 where id = $gid" ;//用like选择性输出。where link like'http://www.jj59.com/yuanchuang/%'

    //echo  $query;

    $queryresult=mysql_query($query) or die("查询数据失败");//执行查询

    //echo var_dump($queryresult);

    while($row = mysql_fetch_array($queryresult)){

    echo ($row['content'])."
    ";

    }

    ?>

    RewriteEngine On

    RewriteRule ^(.*)/([0-9]{1,}).html$ $1/page.php?id=$2

    RewriteRule ^(.*)/index.html$ $1/index.php

    RewriteRule ^(.*)/wenzhang.html$ $1/wenzhang.php

    RewriteRule ^(.*)/gushi.html$ $1/gushi.php

    RewriteRule ^(.*)/sanwen.html$ $1/sanwen.php

    RewriteRule ^(.*)/zawen.html$ $1/zawen.php

    RewriteRule ^(.*)/shige.html$ $1/shige.php

    RewriteRule ^(.*)/riji.html$ $1/riji.php

    RewriteRule ^(.*)/xiaoshuo.html$ $1/xiaoshuo.php

    RewriteRule ^(.*)/contact.html$ $1/contact.php

    二,看到网上有2-3个方法,都是写个Url_rewrite函数,然后require的,感觉不好就不推荐大家了,大家可以去搜索下。

    一般都是借助于apache,nginx,htaccess等,很少用php来实现url的静态化,用php来实现静态化比较麻烦。

    如果出现下面这样,说明你没配置好。

    展开全文
  • php实现伪静态以及定义原理

    千次阅读 2018-11-30 20:29:04
    动态网站由于不容易被搜索引擎搜录所以才有了伪静态这么一说,伪静态顾名思义就是假的静态网站,也就是说动态网站为了方便被搜索引擎收录,利用服务器的rewirte实现的假静态的过程。 首先说明一下伪静态的好处好...
  • web页面要实现伪静态,主要目的是为了seo考虑的,因为静态url相对于动态url来说更利于搜索引擎的抓取。一般实现伪静态的方法都是通过.htaccess urlrewrite实现的。但是如果你的虚拟主机不支持urlrewrite的话,那就要...
  • 使用纯php代码实现页面伪静态的方法,php本文实例讲述了使用纯php代码实现页面伪静态的方法。分享给大家供大家参考。具体如下:if(1==URLROLE){$nav=$_SERVER["REQUEST_URI"];$script_name=$_SERVER["SCRIPT_NAME"];...
  • php实现网页伪静态的方法:首先在服务器根目录创建一个“.htaccess”文件;然后添加内容为“RewriteRule ^index-(\d+)\.html$ index.php?id=$1”即可。本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑.htaccess...
  • PHP伪静态原理及极简实现目的原理极简实现框架实现 目的 伪静态可以隐藏后端实现原理,便于搜索引擎收藏,开起来高大上一些。 原理 通过nginx路径重写跳转到后端,再分发到控制器。 极简实现 为了简单,以nginx和...
  • 伪静态代码 php实现伪静态的方法(实用全面)
  • php静态化分为:纯静态化 和 伪静态化; 纯静态化又分为:局部静态化 和 完全静态化 纯静态化:是把PHP生成的动态页面保存成静态的html文件,用户访问该静态页面,而不是用户每一次访问都重新生成一张相同的网页,...
  • 主要介绍了PHP+APACHE通过使用mod rewrite模块实现网址伪静态的相关资料,需要的朋友可以参考下
  • 1.根据$_SERVER[‘PATH_INFO’]来操作实现。 举个列子比如你的网站的地址是 http://127.0.0.1/show_new.php/look-id-1.shtml你echo $_SERVER[‘PATH_INFO’] 出来的结果就会是 /look-id-1.shtml 看到这个我想大家...
  • php实现伪静态的方法

    2013-04-02 09:38:56
    php伪静态实现方法,mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法
  • 配置伪静态,我们可以使用.htaccess这个文件来配置,当然要打开相应扩展,但是,有的时候我们是不能进行这些配置的,或者有的时候这样的配置并不方便,而且非常的不灵活,今天就总结一个用纯php代码来实现伪静态的...
  • 如何使用.htaccess使非伪静态页面301跳转到伪静态页面然后再跳转?这是一个比较蛋疼的跳转。因为不小心就会搞成死循环导致页面无法打开。好在问题最终解决了。记录并分享出来,给需要的朋友借鉴借鉴。 规则如下: ...
  • mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法 1.检测Apache是否支持mod_rewrite 通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,...
  • php 伪静态之IIS篇

    2020-10-25 20:47:10
    上篇文章我们讲解了APACHE服务器下伪静态实现,不过在国内还是IIS的服务器要多些,特别是个人站长,那么,我们再来学习下IIS下php伪静态实现过程吧
  • 开启PHP伪静态模式

    2020-12-19 11:31:30
    在开发的过程中老早就听说了“伪静态”这一说。但是一直没有对其进行了解。今天通过本篇文章仔细学习下。 首先,什么是伪静态伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过...
  • 在开发的过程中老早就听说了“伪静态”这一说。但是一直没有对其进行了解。 今天终于下定决定 要好好的了解下这方面的内容。 首先,什么是伪静态伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,420
精华内容 5,768
关键字:

php实现伪静态