我的wordpress博客安装在domain.com/blog
,我有一个子页面,其结构看起来像domain.com/blog/page
和domain.com/blog/page/subpage
。
我希望我的访问者能够转到domain.com/subpage
并查看domain.com/blog/page/subpage
的内容,而不会在外部重定向到该网址,从而避免wordpress永久链接重写。
我尝试使用RewriteRule ^subpage$ /page/subpage [L]
并且内容正在投放,但网址看起来像domain.com/blog/page/subpage
(我猜Wordpress永久链接正在使用它。)
htaccess的:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
// tried inserting my code here.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
编辑:
这些日志显示页面访问活动 -
ip - - [19/Jun/2012:14:03:53 -0400] "GET /subpage/ HTTP/1.1" 301 - "http://domain.com/referrer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1"
ip - - [19/Jun/2012:14:03:53 -0400] "GET /blog/page/subpage/ HTTP/1.1" 200 20022 "http://domain.com/referrer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1"
此外,这是我的根.htaccess -
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^subpage/?$ /blog/page/subpage/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
RewriteCond %{HTTP_HOST} ^domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
答案 0 :(得分:3)
在使用Wordpress时,在htaccess中添加一些规则总是很棘手。相反,您应该使用其重写API。
首先,将此代码放在/wp-content/themes/CURRENT_THEME_ACTIVATED/functions.php
的末尾:
function my_custom_page_rewrite_rule()
{
add_rewrite_rule('^subpage/?', 'index.php?pagename=page/subpage', 'top');
}
add_filter('init', 'my_custom_page_rewrite_rule');
备注:您需要在pagename
参数中指定网页级别,否则网址会发生变化。
然后,您需要告诉Wordpress它必须考虑您的新规则。为此,请转到管理面板:Settings
&gt; Permalinks
&gt;点击Save
按钮。现在,您应该可以转到domain.com/blog/subpage
并查看domain.com/blog/page/subpage
的内容(网址不再更改)。
最后,如果您希望domain.com/subpage
可以访问,则需要在根文件夹中添加htaccess并将此代码放入其中:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ blog/$1 [L]
而且......就是这样。你可以去domain.com/subpage
,现在你可以得到你想要的东西。