wordpress规则 wordpress 设置

如何在WordPress中自定义URL规则

大体实现如下:

成都创新互联公司是一家专注于网站设计、成都网站设计与策划设计,天河网站建设哪家好?成都创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:天河等地区。天河做网站价格咨询:18980820575

1. 固定链接URL定义为: /health/A/

2. 实际URL为:index.php?category_name=idx=

实际代码如下:

# 找到模板目录下面的functions.php 添加下面代码

function add_query_vars($aVars) {

$aVars[] = "idx";

return $aVars;

}

// hook add_query_vars function into query_vars

add_filter('query_vars', 'add_query_vars');

function add_rewrite_rules($aRules) {

$aNewRules = array('(health)/([^/]+)/?$' = 'index.php?category_name=$matches[1]idx=$matches[2]');

$aRules = $aNewRules + $aRules;

return $aRules;

}

// hook add_rewrite_rules function into rewrite_rules_array

add_filter('rewrite_rules_array', 'add_rewrite_rules');

到这里已经实现自定义URL规则的固定链接。

那么如何获取URL中的参数呢? 其实知道这是Wordpress自身的路由实现就好明白了。 既然是WP的路由,那么我们就像别的框架一样使用WP的获取URL的参数的访问就可以了。

在需要获取idx参数值的寂寞中,如下代码就可以得到了:

#打印所有参数

var_dump($wp_query-query_vars);

#取得idx参数和值

$idx = get_query_var('idx');

关于wordpress rewrite规则。谢谢

# BEGIN WordPress

IfModule mod_rewrite.c

RewriteEngine On# 下面的这个是路径,如果是根目录,建议设置为 RewriteBase /# 如果有子目录,按照目录名填写

RewriteBase /目录名/

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /wordpress/index.php [L]

/IfModule# END WordPress

如何在wordpress中创建配置自己的重写规则

关于wordpress的重写规则,可以查看wp-includes/rewrite.php源码

wordpress通过flush_rewrite_rules向options数据表保存规则内容

通常,使用add_rewrite_rule这个函数即可实现简单的重写规则的添加动作;

还有add_rewrite_tag、add_permastruct等等,不过这些在应用简单的重写规则时没有add_rewrite_rule来得直接。

需要注意的是,add_rewrite_rule之后要想起到预期的效果,必须执行flush_rewrite_rules动作,但不建议利用代码多次执行flush操作。

而应该在需要的时候再执行,比如插件启用时由register_activation_hook这个钩子发起该动作,或者需要时再到后台固定链接里点保存按钮也可以实现该动作。

-- 举例 --

比如新创建个movies页面,用来介绍指定的电影信息,则该页面的完整url地址应为:

;movie_name=killbill

movie_name是想传入的参数

现在需重写为

步骤:

1、add_rewrite_rule

add_action( 'init', 'wpdit_bq1579112796568320460' );

function wpdit_bq1579112796568320460() {

// 添加该规则后需手动执行flush write rules,参考上面的说明

add_rewrite_rule(

// 该正则用来匹配传入的URL

'movies/([^/]+)/?',

// `pagename` 代表这是个页面

// `movie_name` 用来保存匹配到内容

'index.php?pagename=moviesmovie_name=$matches[1]',

// rewrite rules提供的其实是一组数组用来匹配传入的URL

// 所以,当有近似的正则匹配时,总是第1个匹配到的被返回

// 因这个重写规则为后加的特定规则,故将此添加到顶部

'top' );

}

2、wordpress内置了一组查询变量存于query_vars,不在其内的变量会被忽略;

所以需事先告诉wordpress关于movie_name是什么,并允许movie_name这个变量以便后面的引用。

添加方法:

add_filter( 'query_vars', 'wpdit_bq1579112796568320460_query_vars' );

function wpdit_bq1579112796568320460_query_vars( $query_vars )

{

$query_vars[] = 'movie_name';

return $query_vars;

}

最后,后台设置固定链接里,点击保存按钮后就可以访问试试效果了。

在当前皮肤的page.php里置入下面的代码:

echo get_query_var('movie_name');

看能否显示出killbill.

wordpress静态规则怎么设置

检测主机是否支持伪静态的方法:在WP后台 设置 固定链接,设置为 非默认带?的那种结构,然后访问任何一篇文章,如果出现 404 错误,说明你的主机当前不支持 WordPress 伪静态。

IIS伪静态规则

IIS 环境是 Windows 主机常用的服务器环境,新建一个 txt 文件,将下面的代码添加到文件中:

[ISAPI_Rewrite]

# Defend your computer from some worm attacks

#RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

# Protect httpd.ini and httpd.parse.errors files

# from accessing through HTTP

# Rules to ensure that normal content gets through

RewriteRule /tag/(.*) /index\.php\?tag=$1

RewriteRule /software-files/(.*) /software-files/$1 [L]

RewriteRule /images/(.*) /images/$1 [L]

RewriteRule /sitemap.xml /sitemap.xml [L]

RewriteRule /favicon.ico /favicon.ico [L]

# For file-based wordpress content (i.e. theme), admin, etc.

RewriteRule /wp-(.*) /wp-$1 [L]

# For normal wordpress content, via index.php

RewriteRule ^/$ /index.php [L]

RewriteRule /(.*) /index.php/$1 [L]

然后另存为 httpd.ini 文件,上传到WordPress站点的根目录即可。

Apache伪静态规则

Apache是 Linux 主机下常见的环境,现在一般的 Linux 虚拟主机都采用这种环境。新建一个 htaccess.txt 文件,添加下面的代码:

IfModule mod_rewrite.c

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

/IfModule

然后上传到 WordPress 站点的根目录,重命名为 .htaccess 即可

Nginx伪静态规则

Nginx环境一般是Linux 主机 VPS或服务器用户用的比较多,这些用户一般都会自己配置Nginx,或者有专门的人帮你配置,打开 nginx.conf 或者某个站点的配置环境,比如 wpdaxue.com.conf(不同人配置的不一样),在  server   { } 大括号里面添加下面的代码:

location / {

if (-f $request_filename/index.html){

rewrite (.*) $1/index.html break;

}

if (-f $request_filename/index.php){

rewrite (.*) $1/index.php;

}

if (!-f $request_filename){

rewrite (.*) /index.php;

}

}

保存,重启 Nginx 即可。


当前题目:wordpress规则 wordpress 设置
转载来于:http://hbruida.cn/article/dojpipd.html