如何使wordpress类别的URL末尾带有斜杠,而帖子的URL中却没有。像这样:
“ mysite.com/mycategory/” “ mysite.com/mycategory/mypost”
问题是,默认情况下,您可以使用斜杠执行所有操作,也可以不使用斜杠进行所有操作。 (已通过htaccess删除了“类别”前缀)。
答案 0 :(得分:1)
有两个很好的解决方案:
WP_Rewrite类具有一个名为const options = {
cors: {
origin: '*',
allowedHeaders: '*',
credentials: false
},
}
的变量,该变量根据您的自定义永久链接结构是否以'/'结尾而动态设置。
$use_trailing_slashes
这意味着所有WP生成的链接(the_permalink,category_link,the_permalink_rss等)都不会以'/'结尾。因此,对于类别页面,WP将显示“ / category / category”而不是“ / category / category /”。
您可以通过使用过滤器或修改您的.htaccess或同时修改二者来解决此问题:
示例user_trailingslashit过滤器
user_trailingslashit函数在返回结果之前将'user_trailingslashit'过滤器应用于结果。它将网址和网址类型提供给过滤器。
$this->use_trailing_slashes = ( '/' == substr($this->permalink_structure, -1, 1) );
因此,要对此进行钩接并在除单个帖子之外的所有URL上添加斜杠,请将此代码添加到插件文件或functions.php主题文件中。
$string = apply_filters('user_trailingslashit', $string, $type_of_url);
Htaccess重定向匹配
您可以设置.htaccess重定向,以强制类别网址始终使用像这样的结尾斜杠:
function fix_trailingsss($s='',$t='single')
{
if($t!='single')$s=rtrim($s,'/').'/';
return preg_replace('/^(.*)([^l/])$/i', '\1\2/',$s);
}
add_filter('user_trailingslashit', 'fix_trailingsss', 9999,2);
信息来源 :https://www.askapache.com/wordpress/adding-trailing-permalinks/
如有任何其他疑问,请查阅法典:
答案 1 :(得分:0)
我这样解决了:
function no_page_slash( $string, $type ){
if($type == 'single')
$string = untrailingslashit($string);
return $string;
}
add_filter('user_trailingslashit', 'no_page_slash', 70, 2);
您的永久链接必须设置为/%category%/%postname%/。