skip to Main Content

I am having another issue with .htaccess where I can’t seem to find the right solution for it. What I am trying to accomplish is to redirect from a subdirectory to a specific html document within that same directory when you copy/paste the url displayed below

For example:
http://example.com/staging/test/ to http://example.com/staging/test/page.html

My (almost) working method:

Options -Indexes -MultiViews
RewriteEngine on

RewriteRule ^test/(.*)$ test/page.html [L]

The problem with this code is that it does basically redirect to the correct page.html but if you want to click on any link on page.html it just redirects to page.html again instead of going to a particular link within subdirectory /test/ let’s say /test/page-2.html

Important: This redirect should only affect the subdirectory “staging”. All other sub-directories including root can not be affected.

Other info:
This code is also in my .htaccess file to remove the .html extension for the directory “staging”

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [L]

The directory “staging” is not connected to any CMS and only consists of .html files.
I am on a shared hosting environment (Hostgator/cPanel).

Thank you.

2

Answers


  1. Use below rule, you are using only L flag but I am modifying it for redirect as you mentioned.

    Options -Indexes -MultiViews
    RewriteEngine on
    
    RewriteRule ^test/$ /staging/test/page.html [R=301,L]
    
    Login or Signup to reply.
  2. You want to redirect only the directoy, but not the files in it. The pattern in the rule says match the directory test/ followed by anything .*, including any files.

    To match the directory alone, the pattern must stop at test, which is accomplished by an end of string anchor

    RewriteRule ^test/$ /staging/test/page.html [R,L]
    

    Instead of an absolute path, you can keep the relative path and add a RewriteBase directive

    RewriteBase /staging
    RewriteRule ^test/$ test/page.html [R,L]
    

    If you want to rewrite only, leave out the R flag.

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