我的也是用的便宜的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进行跳转··以上做个总结