php伪静态重写规则,php伪静态规则写法

发布时间:2023-01-07

本文目录一览:

  1. 求织梦手机站伪静态规则及URL 重写规则
  2. 什么叫php伪静态?
  3. php伪静态、url重写
  4. php如何实现网页静态
  5. 如何配置thinkphp的伪静态重写

求织梦手机站伪静态规则及URL 重写规则

最近很多朋友来问织梦58的站点的伪静态是怎么写的,今天就拿出来和大家分享一下子。呵呵 dedecms(织梦)完美实现伪静态的方法
dedecms(织梦)完美实现伪静态的方法
测试版本: Dedecms V5.6版本
测试平台: Windows 7
测试环境: IIS 7.5
成功。其他条件下大同小异。

需要的条件:

  1. 服务器必须支持URL重写。
  2. 后台开启伪静态。
  3. 栏目设置使用动态。
  4. 添加文档时选择使用动态浏览。
  5. 修改php文件 include/channelunit.func.php
  6. 修改 include/arc.listview.class.php
  7. 编写rewrite规则。

操作步骤:

  1. 加载Rewrite模块(过程略)。
  2. dedecms后台-系统-系统基本参数-核心设置-是否使用伪静态,选“是”。
  3. 把栏目和文档设置成为动态浏览。可以手动,用SQL语句更快。 dedecms后台-SQL命令行工具,执行以下语句:
-- 将所有文档设置为“仅动态浏览”
UPDATE dede_archives SET ismake=-1
-- 将所有栏目设置为“使用动态页”
UPDATE dede_arctype SET isdefault=-1

改成1就是静态。动态转换为静态后需要重新生成HTML。

添加栏目和文章默认为动态的一劳永逸的方法:

  1. 修改php文件 include/channelunit.func.php: 查找:
return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html';

修改为:

return "/view-".$aid.'-1.html';

查找:

return $GLOBALS['cfg_phpurl']."/view.php?aid=$aid";

修改为:

return "/view.php?aid=$aid";

其实页可以不修改,就是URL地址会长一点。这个是文章页的。 查找:

$reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;

修改为:

$reurl = "/list-".$typeid.".html";

这个必须修改,是栏目页的。 其实不修改也可以,但是URL地址会长一点。这个是文章的。 5. 打开 include/arc.listview.class.php: 找到:

$plist = str_replace('.php?tid=', '-', $plist);

(大约在第964行) 在其前面添加一行:

$plist = str_replace('plus/list', 'list', $plist);

这个是列表页分页rewrite的url格式的。 默认是:

...

现在是:

...
  1. 设置重写规则,在 httpd.ini 里面写上:
[ISAPI_Rewrite]
# 缓存3600秒 = 1 小时(hour)
CacheClockRate 3600
RepeatLimit 32
# dedecms Rewrite规则
RewriteRule ^(.*)/index\.html $1/index\.php
RewriteRule ^(.*)/list-([0-9]+)\.html $1/plus/list\.php\?tid=$2
RewriteRule ^(.*)/list-([0-9]+)-([0-9]+)-([0-9]+)\.html $1/plus/list\.php\?tid=$2TotalResult=$3PageNo=$4
RewriteRule ^(.*)/view-([0-9]+)-([0-9]+)\.html $1/plus/view\.php\?arcID=$2pageno=$3
  1. 如果不使用动态首页: 把rewrite规则中的:
RewriteRule ^(.*)/index\.html $1/index\.php

去掉,或改为:

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

否则打开时会陷入死循环。

说明:

RewriteRule ^view-([0-9]+)-([0-9]+)\.html /plus/view.php?aid=$1pageno=$2

此为文章分页重写命令。 2. 如果view替换成自己设置的其他词,则需要把 include/arc.archives.class.php 文件中的view同时替换掉。 3. 重写后的URL如下:

  • 文章页:
  • 列表页: 如果需要改成如下格式:
  • 文章页:
  • 列表页: 在 include/channelunit.func.php 中:
return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html';

改为:

return "/abc/view-".$aid.'-1.html';
return $GLOBALS['cfg_phpurl']."/view.php?aid=$aid";

改为:

return "/abc/view.php?aid=$aid";
$reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;

改为:

$reurl = "/abc/list-".$typeid.".html";

重写规则改为:

RewriteRule ^(.*)/index\.html $1/index\.php
RewriteRule ^(.*)/abc/list-([0-9]+)\.html $1/plus/list\.php\?tid=$2
RewriteRule ^(.*)/abc/list-([0-9]+)-([0-9]+)-([0-9]+)\.html $1/plus/list\.php\?tid=$2TotalResult=$3PageNo=$4
RewriteRule ^(.*)/abc/view-([0-9]+)-([0-9]+)\.html $1/plus/view\.php\?arcID=$2pageno=$3
  1. 伪静态可能会出现多个url都是指向相同页面,如果看重SEO效果,则可用robots.txt屏蔽多余url。

什么叫php伪静态?

mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法。

1. 检测Apache是否支持mod_rewrite

通过php提供的 phpinfo() 函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。 如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。 如果没有查找到,则到“LoadModule” 区域,在最后一行加入:

LoadModule rewrite_module modules/mod_rewrite.so

(必选独占一行),然后重启apache服务器即可。

2. 让apache服务器支持 .htaccess

如何让自己的本地APACHE服务器支持“.htaccess”呢?其实只要简单修改一下apache的 httpd.conf 设置就可以让 APACHE支持 .htaccess 了。 打开 httpd.conf 文件(在那里?APACHE目录的CONF目录里面), 用文本编辑器打开后,查找:

Options FollowSymLinks
AllowOverride None

改为:

Options FollowSymLinks
AllowOverride All

就可以了。

3. 建立 .htaccess 文件

有1种最简单的方法建立 .htaccess 文件: 用记事本打开,点击文件–另存为,在文件名窗口输入“.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。

4. rewrite规则学习

我们新建一个 .htaccess 文件之后,就在里面写入以下内容:

RewriteEngine on # rewriteengine为重写引擎开关on为开启off为关闭
RewriteRule ([0-9]{1,})$ index.php?id=$1

我讲解一下 RewriteRuleRewriteRule 是重写规则,支持正则表达式的,上面的 ([0-9]{1,}) 是指由数字组成的,$ 是结束标志,说明是以数字结束! 好吧,现在我们可以实现伪静态页面了,写下一下的规则:

RewriteEngine on
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$ index.php?action=$1id=$2

([a-zA-Z]{1,})-([0-9]{1,}).html$ 是规则,index.php?action=$1id=$2 是要替换的格式,$1 代表第一个括号匹配的值,$2 代表第二个,如此类推!! 我们写一个处理的PHP脚本:

// index.php
echo '你的Action是:' . $_GET['action'];
echo '</p>';
echo '你的ID是:' . $_GET['id'];

好了,我们现在在浏览器中输入:

localhost/page-18.html

输出的是:

你的Action是:page
你的ID是:18

php伪静态、url重写

你的想法是完全可行的,我举个例子告诉你。 你可以先看看这个文章,不懂的可以交流。 apache一般都是在目录下创建 .htaccess 来实现伪静态,IIS不是这样的,这跟PHP本身没有关系,这是http服务器与客户端浏览器之间的约定。 比如说:

RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$
index.php?action=$1id=$2

意思就是说当你访问类似 a_1.html 的时候,apache自动跳转到 index.php?action=$1id=$2 的地方,其中 $1 就是左边重写规则的第一个变量 ([a-zA-Z]{1,})$2 就是 ([0-9]{1,}) 的第二个变量。

php如何实现网页静态

一、静态化的优点:

  1. 有利于搜索引擎收录网站页面的信息:搜索引擎更喜欢静态的,更便于抓取,搜索引擎SEO排名会更容易提高。
  2. 静态网页化网页稳定。
  3. 可以提高网页加载速度。
  4. 减轻服务器负担,浏览器不需要频繁调用数据库。
  5. 数据库出错不会影响正常访问。

二、伪静态

PHP伪静态:是利用Apache mod_rewite 实现url重写的方法。 改写访问地址,能够通过URL的PATHINFO模式来改动它。让它看上去更像一个静态页面。从而有更大的几率被搜索引擎抓取和收录,仅是对搜索引擎比较友好,伪静态化。

三、纯静态化

纯静态化,就是生成HTML文件的方式,我们需要开启PHP自带的缓存机制,即 ob_start 来开启缓存。而且在 ob_start 之前不能有任何输出,否则执行失败。然后我们用 ob_get_contents 函数来获取缓存中的内容,该函数会返回一个字符串。第三个函数就是 ob_end_clean,它用来清空缓存中的内容并且关闭,成功返回True,失败返回False。

if(file_exists("match.html") && (time()-filemtime("match.html")) > 300) {
    // 如果存在对应的静态文件,则直接访问
    require_once("match.html");
} else {
    // 这里用数组来仿真数据库操作,现实一般操作数据库得到对应数据
    $student = array("huangxing","chenyuwei",'xufei','zhangjingwen','xuepei');
    ob_start();
    // 载入模板
    require_once("muban.php");
    file_put_contents("match.html", ob_get_clean());
    require_once('match.html');
}

如何配置thinkphp的伪静态重写

满足thinkphp伪静态(url重写)条件:

  1. 服务器开启url_rewrite功能,linux空间的php虚拟主机只需要开启apache的 mod_rewriet,如果是iis6.0就要安装ISAPI Rewrite模块,apache只要开启 Mod_rewrite 功能就可以了。无忧主机是linux系统的空间,开通空间默认支持。
  2. Linux空间编辑 .htaccess 文件,windows空间编辑 httpd.ini 文件。

thinkphp如何编写 .htaccess 文件?

无忧主机编写的thinkphp伪静态正则表达式 .htaccess 文件如下:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

请将上面正则表达式,保存为 .htaccess 文件,并放到thinkphp项目入口文件同级目录下。并且修改数据库配置(config.php)文件使网站支持url重写功能,加入代码:

define('URL_REWRITE', 2);