问题描述
一个朋友希望他的WordPress网站具有:
- 页面看起来像目录(包括斜杠-www.domain.com/page/)
- 博客帖子看起来像文件(.html扩展名,不加斜杠-www.domain.com/post.html)
- 和看起来像文件的产品(.html扩展名-www.domain.com/products/product.html)
默认情况下,wordpress将在页面和帖子后添加斜杠。 将自定义永久链接结构设置为 /%postname%.html 会将扩展名添加到博客帖子中,但是当然会删除页面末尾的斜杠。
我可以使用add_permastruct重写产品后的类型
function rr_permastruct_html( $post_type,$args ) {
// Works fine!
if ( $post_type === 'product' )
add_permastruct( $post_type,"{$args->rewrite['slug']}/%$post_type%.html",$args->rewrite );
// Worth a shot,but no...
//if ( $post_type === 'page' )
// add_permastruct( $post_type,"{$args->rewrite['slug']}/%$post_type%/",$args->rewrite );
}
但是,在添加带有.html扩展名的帖子时,仍然有页面保持斜线结尾时,我总是碰壁。
我无法使用.htaccess使其工作,因为它会同时影响两者。一段时间后,我对$ wp_rewrite的尝试无济于事:
function rr_rewrite_page_permalink() {
global $wp_rewrite;
if (!strpos($wp_rewrite->get_page_permastruct(),'.html')) {
$wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';
$wp_rewrite->set_permalink_structure( $wp_rewrite->page_structure );
}
$wp_rewrite->flush_rules();
}
add_action('init','rr_rewrite_page_permalink',-1);
Permalink插件在没有解决方案的情况下会产生相同的行为。因此,甚至可能有带有.html扩展名的帖子并且页面都保留斜线吗?
谢谢
解决方法
文件名不应以斜杠结尾。
如果在文件名上强制使用斜杠,则将导致浏览器认为它是文件夹,并导致404错误消息。 Should You Have a Trailing Slash at the End of URLs?
别忘了
如果您的网页可以使用斜杠或不使用斜杠进行访问,则可能导致重复内容和抓取效率方面的问题。
详细了解Permalink for specific page name - WordPress Development Stack Exchange