我刚创建了一个新的wordpress页面模板,在其中运行一些php和mysql脚本,我想将mod重写应用到它的子页面。
例如我生成了以下链接:
http://www.quotist.com/quotes-by-authors.html?letter=D
我怎样才能将其转化为:
http://www.quotist.com/quotes-by-authors/letter/d/?
在我的htaccess中,我有wordpress生成的默认代码......
有谁知道如何实现这一目标?
答案 0 :(得分:1)
试试这个:
Options +FollowSymLinks -MultiViews -Indexes
RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{QUERY_STRING} ^(letter)=(\w)$ [NC]
RewriteRule ([^.]+)\.html http://www.quotist.com/$1/%1/%2? [L,R=301]
RewriteCond %{REQUEST_URI} ^/([\w-]+)/(letter)/\w/? [NC]
RewriteRule ^ /%1.html?%2=%3 [L,QSA]
答案 1 :(得分:0)
您必须将以下内容添加到.htaccess文件中:
RewriteRule ^(?![^.]+\.html.*)([^/]+)/([^/]+)/([^/]+)/?$ $1.html?$2=$3 [L,QSA]
这不会使没有所有三个变量的URL变得美化,但这很容易添加到这个变量中,或者只是在需要时添加一个额外的规则。
答案 2 :(得分:0)
我在最近的一个项目中使用这个小班帮助.. 不得不说它很棒...... 由以下人士撰写:Kyle E Gentile
<?php
// FILENAME: add_rewrite_rules.php
if(!class_exists('add_rewrite_rules')){
class Add_rewrite_rules{
var $query_vars;
var $rules;
function __construct($options){
$this->init($options);
}
function init($options){
foreach($options as $key => $value){
$this->$key = $value;
}
}
function rules_exist(){
global $wp_rewrite;
$has_rules = TRUE;
foreach($this->rules as $key => $value){
if(!in_array($value, $wp_rewrite->rules)){
$has_rules = FALSE;
}
}
return $has_rules;
}
//to be used add_action with the hook 'wp_head'
//flushing rewrite rules is labor intense so we better test to see if our rules exist first
//if the rules don't exist flush its like after a night of drinking
function flush_rules(){
global $wp_rewrite;
if(!$this->rules_exist()){
//echo "flushed"; // If want to see this in action uncomment this line and remove this text and you will see it flushed before your eyes
$wp_rewrite->flush_rules();
}
}
//filter function to be used with add_filter() with the hook "query_vars"
function add_query_vars($query_vars){
foreach($this->query_vars as $var){
$query_vars[] = $var;
}
return $query_vars;
}
//to be used with a the add_action() with the hook "generate_rewrite_rules"
function add_rewrite_rules(){
global $wp_rewrite;
$wp_rewrite->rules = $this->rules + $wp_rewrite->rules;
}
}
}
?>
要使用此课程,您必须先包含该文件 包含文件后,您需要创建一个选项数组。
<?php
include(YOURPLUGIN_ABSPATH.'/add_rewrite_rules.php');
$options = array(
'query_vars' => array('letter'),
'rules' =>
array(
'(.+?)/([^/]+)/([^/]+)/?$' => 'index.php?pagename=$matches[1]&letter=$matches[2]'
)
);
$rewrite = new Add_rewrite_rules($options);
add_action('wp_head', array(&$rewrite, 'flush_rules'));
add_action( 'generate_rewrite_rules', array(&$rewrite, 'add_rewrite_rules') );
add_filter( 'query_vars', array(&$rewrite, 'add_query_vars') );
?>
这将允许您使用网址 http://www.quotist.com/quotes-by-authors/letter/d/
玛蒂