Dav*_*iss 9 wordpress .htaccess mod-rewrite permalinks
我的wordpress博客安装在domain.com/blog,我有一个页面,其子结构看起来像domain.com/blog/page和domain.com/blog/page/subpage.
我希望我的访问者能够访问domain.com/subpage并查看内容,domain.com/blog/page/subpage而无需外部重定向到该URL,从而避免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
Run Code Online (Sandbox Code Playgroud)
编辑:
这些日志显示页面访问时的活动 -
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"
Run Code Online (Sandbox Code Playgroud)
另外,这是我的根.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$
Run Code Online (Sandbox Code Playgroud)
在使用 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');
Run Code Online (Sandbox Code Playgroud)
备注:参数中需要指定页面级别pagename,否则url会发生变化。
然后,您需要告诉 WordPress 它必须考虑您的新规则。为此,请转到您的管理面板:Settings>>Permalinks单击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]
Run Code Online (Sandbox Code Playgroud)
就是这样。你可以去domain.com/subpage,现在你就会得到你想要的。
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |