页面的自定义HTAccess重写规则

时间:2012-01-21 作者:scarhand

我在wordpress上有一个叫做“视频”的页面。其页面id为6,slug为“video”

在我的主题中,我将其设置为基于GET变量显示内容

以下是我正在尝试设置的URL重写:

以下是包含GET变量的原始URL:

我的网站。com/视频/?视频id=102230(&U);视频标题=FC+Emmen+v+AGOVV+Apeldoorn&;视频\\u src=MTAyMjMw

这是我希望将其重写为的URL,以便可以对其进行索引:

我的网站。com/video/102230/MTAyMjMw/FC+Emmen+v+AGOVV+Apeldoorn

以下是我的htaccess文件,该文件不工作:

# BEGIN WordPress
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^video/(.*)/(.*)/(.*)$ ?page_id=6&7video_id=$1&video_src=$2&video_title=$3 [NC]
</ifmodule>
# END WordPress
发生的是,当我尝试访问我的网站时。com/video/102230/MTAyMjMw/FC+Emmen+v+AGOVV+Apeldoorn,它会自动转到mysite。com/video并删除/video之后的所有内容

编辑-现在它并没有删除/video之后的所有内容,但它告诉我“找不到视频102230 MTAyMjMw FC+Emmen+v+AGOVV+Apeldoorn”

1 个回复
最合适的回答,由SO网友:Rob Vermeer 整理而成

您可以使用WordPress的内置重写系统来完成此操作。

function add_video_rewrite() {
    add_rewrite_tag("%video_id%", \'([^/]*)\');
    add_rewrite_tag("%video_src%", \'([^/]*)\');
    add_rewrite_tag("%video_title%", \'([^/]*)\');
    add_rewrite_rule(\'^video/([^/]*)/([^/]*)/[^/]*)\', \'index.php?pagename=video&video_id=$matches[1]&video_src=$matches[2]&video_title=$matches[3]\', \'top\');
}
add_action( \'init\', \'add_video_rewrite\' );
没有测试,但我认为应该可以。它首先添加可以在模板中使用的标记(get\\u query\\u var(video\\u id))。然后添加专门匹配URL的重写规则。

您应该将此代码放入函数中。然后刷新重写规则(转到设置>永久链接)。

有关为WordPress重写规则的更多信息:
http://codex.wordpress.org/Rewrite_APIhttp://codex.wordpress.org/Rewrite_API/add_rewrite_taghttp://codex.wordpress.org/Rewrite_API/add_rewrite_rule

结束