The Moz Q&A Forum

    • Forum
    • Questions
    • My Q&A
    • Users
    • Ask the Community

    Welcome to the Q&A Forum

    Browse the forum for helpful insights and fresh discussions about all things SEO.

    1. SEO and Digital Marketing Q&A Forum
    2. Categories
    3. Technical SEO Issues
    4. How to force Wordpress to remove trailing slashes?

    How to force Wordpress to remove trailing slashes?

    Technical SEO Issues
    9 6 38.4k
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as question
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • james-tb
      james-tb last edited by

      I've searched around quite a bit for a solution here, but I can't find anything. I apologize if this is too technical for the forum.

      I have a Wordpress site hosted on Nginx by WP Engine. Currently it resolves requests to URLs either with or without a trailing slash.

      So, both of these URLs are functional:

      <code>mysite.com/single-post</code>
      

      and

      <code>mysite.com/single-post/</code>
      

      I would like to remove the trailing slash from all posts, forcing mysite.com/single-post/ to redirect to mysite.com/single-post. I created a redirect rule on the server:

      ^/(.*)/$ -> /$1

      and this worked well for end-users, but rendered the admin panel inaccessible. Somewhere, Wordpress is adding a trailing slash back on to the URL mysite.com/wp-admin, resulting in a redirect loop. I can't see anything obvious in .htaccess.

      Where is this rule adding a trailing slash to 'wp-admin' established?

      Thanks very much

      1 Reply Last reply Reply Quote 0
      • DonnaDuncan
        DonnaDuncan last edited by

        Are you using the yoast SEO plugin? There is a setting under Advanced > Permalinks that forces a trailing slash onto URLs. I'd try looking at that first.

        1 Reply Last reply Reply Quote 1
        • Martijn_Scheijbeler
          Martijn_Scheijbeler last edited by

          Hi John,

          It seems obvious, but why not go for a adding a trailing slash to every URL instead or removing it, would solve your issues at least.

          1 Reply Last reply Reply Quote 1
          • james-tb
            james-tb last edited by

            Thanks for the replies, Donna, Martijn. I am running Yoast and considered adding the trailing slash, but:

            -Most of the inbound links we have are to URLs with no slash

            -The slash style seems a little dated in general-few sites use them these days.

            I'd really love to just figure out how to solve the issue a little closer to the root.

            1 Reply Last reply Reply Quote 0
            • ATP
              ATP last edited by

              Hi John,

              I asked something similar myself something myself but im on the Magento platform. This should matter as the solution wasn't platform specific. It just involved editing htaccess file. If your up for editing your .htacccess file then it could be of some use. The topic URL is below and it contains multiple solutions for editing and removing the / and the debugging process we went through along the way. (Courtesy of Andy and Dirk) Hopefully its of some use to you

              https://moz.com/community/q/cms-pages-multiple-urls

              SUMMARY:
              If you know how to edit your .htaccess and your ready to dive straight in this code should do it.

              RewriteCond%{REQUEST_FILENAME}!-d
              RewriteRule^(.*)/$ /$1 [L,R=301]

              If you want the page with explanations and walk-through please see the original topic as editing your htaccess  badly can cause all sorts of errors.

              Edit: I realised i was probably a tiny bit lazy and should of probably included this link which is the original link i got sent from stackoverflow with instructions on how to to edit your .htaccess file.

              http://stackoverflow.com/questions/21417263/htaccess-add-remove-trailing-slash-from-url

              Dirks answer later in the post offer guidance on applying it to certain parameters which should prove helpful if your still having loop problems with the admin page.

              1 Reply Last reply Reply Quote 2
              • evolvingSEO
                evolvingSEO last edited by

                Hi John

                Did ATP's solution help you out? Let us know if we can look into this further!

                1 Reply Last reply Reply Quote 0
                • james-tb
                  james-tb last edited by

                  Thanks so much, ATP! It looks like writing the condition into .htaccess does the trick—at least for my local install. Is this because the commands located within the

                  BEGIN WordPress

                  END WordPress

                  comments only apply to URLs outside of the WP admin area?

                  Thanks again, ATP—that was a very thorough and helpful response!

                  1 Reply Last reply Reply Quote 0
                  • ATP
                    ATP last edited by

                    Hi John, sorry ive been on leave so not checked back on the  forums.

                    Glad it looks like its working for you. I dont think the comments do anything except signify where word press has begun writing to the .htaccess (i dont run wordpress so can't be sure). Normally comments do nothing but signify something useful to the user.

                    I can try to breakdown the code a little for you, but my htaccess isn't fantastic so its by no means complete.

                    Firstline:  RewriteCond%{REQUEST_FILENAME}!-d

                    RewriteCond% = This says use this condition if....
                    {REQUEST_FILENAME}!-d =  ... is NOT a directory

                    RewriteRule^(.*)/$ /$1 [L,R=301]
                    I believe this bit takes a snapshot of the url upto the final / then rewrites it to that snapshot.

                    The combination of these must mean it doesn't affect your wordpress admin directory. I know this code can break if your install is within a directory (as is discussed in the stackover flow link) but they have provided a solution for that in that topic. I would say test if on your live website to make complete sure it will work as this may be slightly different to your local install. Have a back-up ready just incase it doesn't.

                    Make sure you check every url including

                    Homepage
                    Pages
                    Posts
                    Category Pages
                    Sub Category Pages
                    Post Pages
                    Any images or files

                    To make sure it is working as expected on all of them.

                    1 Reply Last reply Reply Quote 1
                    • BlueprintMarketing
                      BlueprintMarketing last edited by

                      WPEis run on a base server using Apache with a Nginx proxy so you can use the WP engine  301 redirect system built-in or you can simply add a redirect to the HTAccess file. If you would like to use a tool to do this I recommend this one another alternative is to ask WP engine to make a change for you.https://www.aleydasolis.com/htaccess-redirects-generator/non-slash-vs-slash-urls/ApacheJust copy to your htaccess:```
                      https://example.com/page/

                      **https://example.com/page** 
                      ``` 
                      <label for="nonslash">**Slash to Non-Slash URLs**</label>
                      
                      > <ifmodule mod_rewrite.c="">RewriteEngine on
                      > RewriteCond %{REQUEST_FILENAME} !-d
                      > RewriteRule ^(.*)/$ /$1 [L,R=301]</ifmodule>
                      
                      **Non-Slash to Slash URLs**
                      
                      ```
                      ****Apache**
                      https://example.com/page**
                      

                      https://example.com/page/

                      
                      > <ifmodule mod_rewrite.c="">RewriteEngine on
                      > RewriteCond %{REQUEST_FILENAME} !-f
                      > RewriteRule ^(.*[^/])$ /$1/ [L,R=301]</ifmodule>
                      
                      

                      USEING Nginx to do

                      **https://example.com/page/**
                      

                      https://example.com/page

                      
                      As you see, there is one tiny difference between those two URLs, and it’s the trailing slash at the end. In order to avoid duplicate content, if you are using Nginx you can **remove the trailing slash from Nginx** URLs.
                      
                      Place this inside your virtual host file in the server {} block configuration:
                      
                      > ```
                      > rewrite ^/(.*)/$ /$1 permanent;
                      > ```
                      
                      Full example:
                      
                      > ```
                      > server {
                      > listen 80;
                      > server_name www.mysite.com;
                      > rewrite ^/(.*)/$ /$1 permanent;
                      > }
                      > ```
                      
                      All done, now Nginx will remove all those trailing slashes.
                      
                      

                      USEING Nginx to do
                      https://example.com/page
                      https://example.com/page/

                      
                      Add a trailing slash by placing this inside your virtual host file in the server {} block configuration:
                      
                      > ```
                      > rewrite ^(.*[^/])$ $1/ permanent;
                      > ```
                      
                      Full example:
                      
                      > ```
                      > server {
                      > listen 80;
                      > server_name www.mysite.com;
                      > rewrite ^(.*[^/])$ $1/ permanent;
                      > }
                      > ```
                      
                      From now on, Nginx should add your trailing slash automatically to every url
                      
                      *   https://www.scalescale.com/tips/nginx/add-trailing-slash-nginx/
                      *   https://www.scalescale.com/tips/nginx/nginx-remove-trailing-slash/
                      
                       I hope this helps,
                      
                      Tom
                      1 Reply Last reply Reply Quote 0
                      • 1 / 1
                      • First post
                        Last post
                      • Google confused by trailing slash
                        AndyKubrin
                        AndyKubrin
                        0
                        4
                        218

                      • Trailing Slashes on URLs
                        GastonRiera
                        GastonRiera
                        0
                        2
                        146

                      • Add trailing slash after removing .html extention
                        NeatIT
                        NeatIT
                        0
                        6
                        712

                      • Trailing Slashes and SEO
                        max.favilli
                        max.favilli
                        0
                        8
                        634

                      • Will removing the trailing slash impact my SEO?
                        Alick300
                        Alick300
                        0
                        3
                        5.7k

                      • Remove remove
                        KeriMorgret
                        KeriMorgret
                        0
                        4
                        110

                      • Issues with trailing slash url
                        tomcraig86
                        tomcraig86
                        0
                        2
                        462

                      • Trailing slash 301 redirect code
                        jamesjackson
                        jamesjackson
                        0
                        10
                        5.4k

                      Get started with Moz Pro!

                      Unlock the power of advanced SEO tools and data-driven insights.

                      Start my free trial
                      Products
                      • Moz Pro
                      • Moz Local
                      • Moz API
                      • Moz Data
                      • STAT
                      • Product Updates
                      Moz Solutions
                      • SMB Solutions
                      • Agency Solutions
                      • Enterprise Solutions
                      • Digital Marketers
                      Free SEO Tools
                      • Domain Authority Checker
                      • Link Explorer
                      • Keyword Explorer
                      • Competitive Research
                      • Brand Authority Checker
                      • Local Citation Checker
                      • MozBar Extension
                      • MozCast
                      Resources
                      • Blog
                      • SEO Learning Center
                      • Help Hub
                      • Beginner's Guide to SEO
                      • How-to Guides
                      • Moz Academy
                      • API Docs
                      About Moz
                      • About
                      • Team
                      • Careers
                      • Contact
                      Why Moz
                      • Case Studies
                      • Testimonials
                      Get Involved
                      • Become an Affiliate
                      • MozCon
                      • Webinars
                      • Practical Marketer Series
                      • MozPod
                      Connect with us

                      Contact the Help team

                      Join our newsletter
                      Moz logo
                      © 2021 - 2026 SEOMoz, Inc., a Ziff Davis company. All rights reserved. Moz is a registered trademark of SEOMoz, Inc.
                      • Accessibility
                      • Terms of Use
                      • Privacy