views:

180

answers:

2

hi,

i am having a url like http://localhost/joomla/Joomla_1.5.7/index.php?option=com_content&view=section&layout=blog&id=3&Itemid=55

and i want to redirect this to http://localhost/joomla/Joomla1.5/index.php?option=com_content&view=section&layout=blog&id=3&Itemid=55

Not only this redirection but whenever i have anything next to Joomla_1.5.7/ i am trying to attach that to Joomla1.5 .. How to do this in PHP .... How to identify that the url contains something after Joomla_1.5.7 to get it??

EDIT: ## Can be commented out if causes errors, see notes above. Options +FollowSymLinks

#
  #  mod_rewrite in use

  RewriteEngine On

########## 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] # ########## End - Joomla! core SEF Section

 RewriteEngine on
 RewriteCond %{REQUEST_URI} ^/joomla/Joomla_1\.5\.7/.*
 RewriteRule ^(.*)$ http://%{HTTP_HOST}/joomla/Joomla1.5/$1 [R=301,L]

is the content in my htaccess file but still it showed any changes in my site.

+3  A: 

You could do this with an htaccess file like this:

RewriteEngine on
RewriteRule ^joomla/Joomla_1.5.7/(.*?)$ joomla/Joomla1.5/$1 [L,QSA]

But if you absolutely want to achieve it with PHP, put this in the old index.php:

header("Status: 301");
header("Location: http://localhost/joomla/Joomla1.5/index.php".(!empty($_GET) ? '?'.http_build_query($_GET) : ''));
exit;
Dragory
pinkgothic
True, true. Fixed it.
Dragory
That'll still break on arrays, since it has no recursion. Not a fan of `http_build_query()`?
pinkgothic
+1 for the mod_rewrite solution, I would add R=permanent to the rule (to make it a 301 redirect), thus: RewriteRule ^joomla/Joomla_1.5.7/(.*?)$ joomla/Joomla1.5/$1 [R=permanent,L,QSA]
Sohnee
Added the R=permanent to the answer. Also, pinkgothic, I didn't even know such a function existed. Let me look at it for a moment, I'll update the answer then... EDIT: updated
Dragory
I tried the R=permanent on my own host, but that messed up something. I removed it from the answer for now.I think it works if you redirect to a completely new URL, though.
Dragory
@Dragory: Yay for polished answers! :D Not that it's up to me, but I would accept this one. ^_^
pinkgothic
A: 

If you have mod_rewrite, in your .htaccess you can put something along these lines:

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/joomla/Joomla_1\.5\.7/.*
RewriteRule ^(.*)$ http://%{HTTP_HOST}/joomla/Joomla1.5/$1 [L]

Basically, it matches any incoming URL that starts with /joomla/Joomla_1.5.7/ and redirects it to /joomla/Joomla1.5/, with all the extra parameters intact, but the URL won't change in the user's address bar.

If you want the URL to change, you can change the last line to

RewriteRule ^(.*)$ http://%{HTTP_HOST}/joomla/Joomla1.5/$1 [R=301,L]

Hope this is what you're looking for!

Jeriko