| 3:58 pm on Nov 24, 2007 (gmt 0)|
The Redirect directive, as documented, takes the URL-path prefix on the left, and redirects to the URL-prefix of the right, appending any path information not explicitly included in the left-side URL-path prefix to the URL-path on the right. So, it is behaving exactly as described in the documentation.
What you need is the RedirectMatch directive, which can be told to 'drop' path information:
RedirectMatch 301 ^/sub(.*)$ http://www.example.com/page.html
The RewriteEngine directive controls whether RewriteRules in mod_rewrite are enabled, and has nothing to do with either Redirect or RedirectMatch directives, both of which are part of mod_alias.
| 9:23 pm on Nov 24, 2007 (gmt 0)|
Thanks jdMorgan for your reply. I was also suggested this .htaccess command by another person:
ReWriteRule ^sub/.*$ /page.html [L,R=301]
Do you have any opinion as whether one is more appropriate than the other?
| 8:13 am on Nov 25, 2007 (gmt 0)|
I'm encountering a strange issue with the 301 redirect command--I'm wondering whether you can provide me some suggestions?
As I said before, I wanted all pages in a specific subdirectory:
To redirect to a specific page:
The strange thing that is happening is that several of the pages in the subdirectory have weird php URLs like:
And using your suggested .htaccess directive, they are being redirected/rewritten as
Anyone have any thoughts on how I can get rid of the "?id=section1" part?
Thanks very much!
| 2:09 pm on Nov 25, 2007 (gmt 0)|
This would likely be a code-order problem, where the internal rewrite of the static URL to the 'weird' dynamic URL is occurring before the external redirect.
In order to control the order of execution you will need to use the mod_rewrite version of the redirect, and place the redirect ahead of the internal rewrite. Further, you'll want to clear any query string received with the client request:
RewriteRule ^sub/ /page.htm[b]l?[/b] [R=301,L]
I assume that you already have other working RewriteRules. If not, you will need to 'set up' mod_rewrite by putting the following code before your first RewriteCond or RewriteRule:
The Options directive may not be allowed on your server, but if it is allowed, it may be required. There is no way to tell except to try it. If it is not allowed and also required, then you won't be able to use mod_rewrite on your server.
| 11:49 pm on Nov 25, 2007 (gmt 0)|
That worked perfectly, thank you!