将所有以单词结尾的URL重定向到没有该单词结尾的相同URL



如何通过.htaccess重定向所有url,使所有以-text/结尾的url重定向到(url)/,删除-text部分

例如,所有url (word-text/):

https://www.example.com/example-text/

https://www.example.com/example/

要删除url路径末尾(最后一个斜杠之前)的-text,您可以在根.htaccess文件的顶部(# BEGIN WordPress部分之前)执行以下操作。

例如:

RewriteRule (.+)-text/$ /$1/ [R=302,L]

不需要其他指令(因为RewriteEngine On指令在后面的WordPress代码块中)

$1反向引用(在替换字符串中)包含url路径末尾-text/之前的url路径。

这适用于任何以-text/结尾的URL。如果它只应用于包含单个url路径段的url(如您的示例),那么您可以修改RewriteRule模式,如下所示:

RewriteRule ^([^/]+)-text/$ /$1/ [R=302,L]

这将匹配/example-text/(单路径段),但不匹配/foo/bar-text(两个路径段)。

注意这些是302(临时)重定向。如果这是永久性的,那么将其更改为301,但只有在您测试了它的工作原理之后。默认情况下,301是由浏览器持久缓存的,因此可能会使测试出现问题。

  • 这不是你的答案

  • 但是我把这个答案放在这里,也许它会解决其他人的问题

    function forward_to_url(){
    $self = $_SERVER["REQUEST_URI"];
    //The string you want to find
    $itemCheck = "url";
    $needle = $itemCheck. '/';
    //Any Address You want redirect
    $forwardlink = '/'.preg_replace('/'.strtolower($itemCheck).'/','',strtolower($self));
    $length = strlen($needle);
    $urlend= substr($self, -$length);
    if ($urlend == $needle or $urlend == $itemCheck) {
    wp_redirect($forwardlink, 301);
    }
    }
    add_action('template_redirect', 'forward_to_url');
    

最新更新