为我的自定义URL创建永久链接

时间:2014-03-27 10:31:42

标签: wordpress wordpress-theming

在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');

它适用于以下情况:

  1. http://mysite.local/mysitename/somestring?dummyquerystring
  2. http://mysite.local/mysitename/somestring/////
  3. http://mysite.local/mysitename/somestring?dummyquerystring/////
  4. 以下情况不起作用:

    1. http://mysite.local/mysitename/somestring/?dummyquerystring
    2. http://mysite.local/mysitename/somestring/?dummyquerystring/
    3. http://mysite.local/mysitename/somestring/?dummyquerystring////
    4. 如何使其完全按照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]
      

0 个答案:

没有答案