permanentes - wordpress get current url
bonita url con.htaccess? (3)
Deberá agregar lo siguiente a su archivo .htaccess:
RewriteRule ^(?![^.]+/.html.*)([^/]+)/([^/]+)/([^/]+)/?$ $1.html?$2=$3 [L,QSA]
Esto no embellecerá las URL que no tienen las tres variables, pero eso es bastante fácil de agregar a esta o simplemente incluir una regla adicional si es necesario.
Acabo de crear una nueva plantilla de página de WordPress que ejecuta algunas secuencias de comandos php y mysql en su interior y me gustaría aplicar la modificación de mods a sus subpáginas.
por ejemplo, tengo el siguiente enlace generado:
http://www.quotist.com/quotes-by-authors.html?letter=D
¿Cómo puedo transformar esto en algo así como:
http://www.quotist.com/quotes-by-authors/letter/d/ ?
en mi htaccess tengo el código predeterminado generado por wordpress ...
¿Alguien sabe cómo lograr eso?
Estaba usando esta pequeña ayuda de clase en un proyecto reciente ... tengo que decir que funcionó de maravilla ... fue escrito por: 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;
}
}
}
?>
Para usar esta clase, primero debes incluir el archivo.
Después de incluir el archivo, debe crear una matriz de opciones.
<?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'') );
?>
esto le permitirá usar la url http://www.quotist.com/quotes-by-authors/letter/d/
Marty
Prueba esto:
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]