Forum Moderators: phranque
Hoping you can help a rookie out.
I have a redirect for an old web page from an old web site.
eg
redirect 301 /Can%20Lure%20Companies.htm
But because of my rewrite rules the URL is never redirected because it is rewritten first...
Any ideas? It is a standard Joomla .htaccess setup
########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=¦\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<¦%3C).*script.*(\>¦%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=¦\[¦\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=¦\[¦\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root)
# RewriteBase /
########## Begin - Joomla! core SEF Section
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/¦\.php¦\.html¦\.htm¦\.feed¦\.pdf¦\.raw¦/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
On the other hand, "RewriteRule" is handled by mod_rewrite.
These are two different Apache modules which handle two different sets of directives, and which use different syntax. Depending on your server setup, either one may run before the other.
In other words, the "code" in your .htaccess file is not processed in strict top-to-bottom order, but rather it is 'scanned' by each Apache module in turn, with each module executing only those directives that it understands.
Therefore, only directives belonging to the same module will execute "in order," and you cannot directly control execution order by the order you place directives in your .htaccess file -- The modules will be invoked in the order determined by the server config files, and you can't change that from the .htaccess level.
So, it sounds like mod_rewrite is running first and rewriting the request to your Joomla script before mod_alias ever gets a chance to see your "Redirect 301" directive.
Several useful resources are cited in our Forum Charter.
Jim
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{REQUEST_URI} (\.php¦\.html?¦\.feed¦\.pdf¦\.raw¦/[^.]*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
Important note: You must change the broken pipe "¦" characters above to solid pipe characters before use; Posting on this forum modifies the pipe characters.
Jim