在WordPress中,我尝试将网址中带有“somestring”的所有请求重定向到特定模板
这意味着:http://mysite.local/mysitename/somestring到文件somefile.php中的特定模板是我的代码:
function custom_templates(){
/* To load template for specific page URLS */
if(strpos($_SERVER['REQUEST_URI'], 'somestring')){
if(substr($_SERVER['REQUEST_URI'], -1) != '/' || substr($_SERVER['REQUEST_URI'], -2) == '//') {
$auth_vars = end(array_filter(explode("/", $_SERVER['REQUEST_URI'])));
$url="/somestring/".$auth_vars."/";
wp_redirect($url , 301);
exit;
}
// if we have a 404 status
if ($wp_query->is_404) {
// set status of 404 to false
$wp_query->is_404 = false;
$wp_query->is_archive = true;
}
header("HTTP/1.1 200 OK");
include (get_stylesheet_directory() . '/somefile.php');
exit;
}
}
add_action('template_redirect', 'custom_templates');
它适用于以下情况:
以下情况不起作用:
如何使其完全按照WordPress处理URL的方式工作
这是我的.htaccess代码
RewriteBase /mysitename
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]