Results 1 to 3 of 3

Thread: 301 redirects for pages within folders and with no extension

  1. #1
    Join Date
    Sep 2010

    301 redirects for pages within folders and with no extension

    I recently moved my website off of Wordpress and it's now just an HTML site on Linux. I'm having a lot of trouble setting up 301 redirects in my .htaccess file. For some reason pages within folders are not redirecting properly and I'm getting a 500 Internal Server Error.

    For example, if I use this, it works fine:
    Redirect 301 /old-page http://www.mydomain.com/folder/new-page
    But if I try redirecting a page within a folder, I'm getting the 500 error:
    Redirect 301 /old-folder/old-page http://www.mydomain.com/folder/new-page
    The above is actually adding the old page to the end of the new URL, which I'm assuming what's causing the server error, like this: http://www.mydomain.com/folder/new-page/old-page

    The ONLY time it works is when I add the .html extension to the page, like so:
    Redirect 301 /old-folder/old-page.html http://www.mydomain.com/folder/new-page
    Problem is, many sites aren't linking to the old page URLs using the ".html" (since it was hosted on Wordpress and didn't show the file extension) so I absolutely need to redirect the pages without it.

    I also have code in the .htaccess file to remove the ".php" extension of the pages, so "/index.php" is just "/" which may be causing the conflict.

    Here is my current .htaccess file with some sample redirects (you'll see the first one works but the other two don't). Any ideas?

    <IfModule mod_rewrite.c>
    RewriteEngine On
    Redirect 301 /solution http://www.erecruit.com/software/enterprise-staffing-software
    Redirect 301 /solution/crm http://www.erecruit.com/software/sales-crm
    Redirect 301 /solution/matching http://www.erecruit.com/software/recruiting
    RewriteBase /
    # remove enter code here.php; use THE_REQUEST to prevent infinite loops
    RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
    RewriteRule (.*)\.php$ $1 [R=301]
    # remove index
    RewriteRule (.*)/index$ $1/ [R=301]
    # remove slash if not directory
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} /$
    RewriteRule (.*)/ $1 [R=301]
    # add .php to access file, but don't redirect
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteCond %{REQUEST_URI} !/$
    RewriteRule (.*) $1\.php [L]
    ErrorDocument 404 http://www.erecruit.com/404.php

  2. #2
    Join Date
    Sep 2010
    NM, I finally figured out the problem. All I need to do was reorganize the pages in the .htaccess file so that pages in a folder are above others. Example:

    Redirect 301 /old-folder/old-page http://www.mydomain.com/folder/new-page
    Redirect 301 /old-page http://www.mydomain.com/folder/new-page

    I was doing it the other way around! Glad it was a simple fix!

  3. #3
    Join Date
    May 2013
    Glad to hear that

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center