skip to Main Content

How to redirect ALL URLs via .htaccess so that ALL urls ending with -text/ are redirected to (url)/, removing the -text part.

For example, ALL urls ( with word -text/ ) :

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

to

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

2

Answers


    • This is not exactly your answer

    • But I put this answer here so that maybe it will solve the problem of some other people

      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');
      
    Login or Signup to reply.
  1. To remove -text at the end of the URL-path (before the final slash) you could do something like the following at the top of your root .htaccess file (before the # BEGIN WordPress section).

    For example:

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

    No other directives are required (since the RewriteEngine On directive is in the WordPress code block that follows).

    The $1 backreference (in the substitution string) contains the URL-path that precedes -text/ at the end of the URL-path.

    This applies to any URL that ends in -text/. If it should only apply to URLs that contain a single URL-path segment (as in your example), then you can modify the RewriteRule pattern as follows:

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

    This will match /example-text/ (single path segment) as before, but not /foo/bar-text (two path segments).

    Note that these are 302 (temporary) redirects. If this is intended to be permanent then change it to a 301, but only once you have tested that it works as intended. 301s are cached persistently by the browser by default so can make testing problematic.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search