php iis 伪静态,WordPress 伪静态规则(IIS/Apache/Nginx)

我的也是用的便宜的WIN主机,静态化,后面必须有index.php,看着百度的教程弄什么404也没弄好,最后自己没辙了,挨个的找的源文件修改的:

步骤:1.固定链接选择第一个,默认的 ?p=123这样的

2.更改.htaccess RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ – [L]

RewriteRule ^cat-([^/]+).html ?cat=$1

RewriteRule ^page_id-([^/]+).html ?page_id=$1

RewriteRule ^p-([^/]+).html ?p=$1

楼主的上面的那个第7行,一定不要有,那个会把自己写的规则导入到首页··就是RewriteRule . /index.php [L] 这个不要;

3.在wp-includes 》link-template.php 这个文件下搜索”?p=”,”?page_id=”就是改成默认固定链接之后,前台文章基本页面,以及page页面的链接;找到之后改成“p-””page_id-” ,在加个“.html”;如:$permalink = home_url(‘p-‘ . $post->ID.’.html’);本来里面的”.html”是没有的,自己加上$link = home_url( ‘page_id-‘ . $post->ID.’.html’ );这是另外的一个。

4.?cat= 分类的链接是这个的,但是在上面的3中找不到,后来想的办法是把导航的链接进行更改,文件是:wp-includes>nav-menu-template.php 这个文件里面,需要自己写一段PHP代码。首先找到:

$value = ( ‘href’ === $attr ) ? esc_url( $value ) : esc_attr( $value );

$attributes .= ‘ ‘ . $attr . ‘=”‘ . $value . ‘”‘;

这两行代码;然后在他们中见插入一个if判断来处理链接字符

if($value!=’/’){

$subV=str_replace(“?”,””,$value);

$reV=str_replace(“=”,”-“,$subV);

$value=$reV.”.html”;

}

更改后是:$value = ( ‘href’ === $attr ) ? esc_url( $value ) : esc_attr( $value );

if($value!=’/’){

$subV=str_replace(“?”,””,$value);

$reV=str_replace(“=”,”-“,$subV);

$value=$reV.”.html”;

}

$attributes .= ‘ ‘ . $attr . ‘=”‘ . $value . ‘”‘;

4.通过上述方法页面上的链接都会以html展现

5.但是在文章列表页面会出现翻页无法翻页的情况,原因是翻页只能用动态的进行搜索?cat=2 ,这样的···wordpress的翻页是直接获取当前的列表的url然后在那个基础上进行查询。建议如果有时间可以自己写个翻页的代码,或者按照如下方法·····(我弄了一天的时间···这几个问题···醉了)

首先,我用的是wp-pagenavi 这个插件弄的翻页··原始的太丑···;通过FTP找到插件的目录:wp-content/plugins/wp-pagenavi/core.php 这个里面的269行:$attr[‘href’]= $this->get_url( $page );这行,改成

$attr[‘href’] = “javascript:void(0);”;

$attr[‘data-href’] = $this->get_url( $page );

$attr[‘onclick’] = “navPage(this)”;

第一行是把原来的href弄成空链接,这样前台的翻页按钮就不会跳转页面;

第二行是把url写入data-href 自定义属性··用来存储url

第三行,添加··onclick方法里面的函数是我自己写的,下面会提到;

5.然后找到footer.php,写入js . 这个文件在主题文件夹里面,当然你可以随意找个公共页面,或者写在归档archive.php这个里面;JS如下:

function navPage(e){

var httpV=e.getAttributeNode(“data-href”).value;

var patt=/paged/;

var result=patt.test(httpV);

if(result==true){

console.log(httpV);

var n=httpV.replace(“cat-“,”?cat=”);

n=n.replace(“.html?”,”&”);

window.location.replace(n);

}else{

e.getAttributeNode(“href”).value=httpV;

}

}

这个我就不解释了,就是把翻页的a里面的date-href数据拿出来然后改成动态的,然后加载页面,完事判断在动态链接的情况下直接读取data-href插入到href进行跳转··以上做个总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值