首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在wordpress安装中使用mod_rewrite重定向

在wordpress安装中使用mod_rewrite重定向
EN

Stack Overflow用户
提问于 2016-11-07 21:55:28
回答 1查看 43关注 0票数 0

目前,wordpress安装使用的urls如下:http://example.com/test-page

它使用URL的“test- page”部分来查找要显示的页面。我的问题是,我构建了一个自定义应用程序,它通过PHP include插件加载到wordpress中。此应用程序依赖于URL,如http://examples.com/test-page/title-of-page/id

我需要使用mod_rewrite将其转到:http://example.com/test-page&title=$1&id=$2 (因为测试页面本身是查询字符串的一部分)

我尝试了很多方法,搜索SO,阅读mod_rewrite标志并测试不同的正则表达式解决方案。

这是我的一个尝试:

代码语言:javascript
复制
RewriteRule ^directory-listing/([^/]+)/([^/]+) /directory-listing&title=$1&id=$2 [L]
RewriteRule ^directory-listing/([^/]+) /directory-listing&title=$1 [L]
RewriteRule ^directory-listing$ /directory-listing [L]

目前为止的整个.htaccess:

代码语言:javascript
复制
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

## Custom ##
RewriteRule ^directory-listing/([^/]+)/([^/]+) /directory-listing&title=$1&id=$2 [L]
RewriteRule ^directory-listing/([^/]+) /directory-listing&title=$1 [L]
RewriteRule ^directory-listing$ /directory-listing [L]
## End Custom ##

#RewriteCond %{REQUEST_FILENAME} -f [OR]
#RewriteCond %{REQUEST_FILENAME} -d
#RewriteRule ^ - [L]

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

我真的被卡住了。我真的需要一些帮助。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-11-07 23:31:40

显然,我对wordpress是如何处理重定向的非常缺乏了解。经过进一步的研究,我发现我实际上需要将钩子添加到functions.php文件中,才能让它按我所期望的那样工作。我将这些添加到文件的底部,并能够完成我想要做的事情。

代码语言:javascript
复制
function rewrite_tags_for_directory_listings() { 
    add_rewrite_tag('%dir_title%', '([^/]+)');
    add_rewrite_tag('%dir_id%', '([^/]+)');
}
add_action('init', 'rewrite_tags_for_directory_listings', 10, 0);

function rewrite_rule_for_directory_listings() {
    add_rewrite_rule('^directory-listing/([^/]+)/([^/]+)$','index.php?page_id=11794&dir_title=$matches[1]&dir_id=$matches[2]','top');
}
add_action('init', 'rewrite_rule_for_directory_listings', 10, 0);

然后,在我包含的PHP文件中,我获得了如下变量:

代码语言:javascript
复制
global $wp_query;
$id = $wp_query->query_vars['dir_id'];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40466948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档