SitePoint Sponsor

User Tag List

Results 1 to 3 of 3
  1. #1
    SitePoint Member
    Join Date
    Feb 2013
    Posts
    2
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb 301 Redirect - Joomla

    Hi,

    I have the following problem:

    I have a joomla 1.1.15 website that is clearly obsolete, and it is in a subfolder. It has non sef urls that are indexed by google.

    In the root i have joomla 2.5 with good urls. All i want is to redirect all traffic from the subfolder (all the non sef urls) to the root.

    I have partially done it with a redirect from subfolder to root with:

    HTML Code:
    RewriteRule ^subfolder\?$ "http\:\/\/www\.my\-web\.com\/" [R=301,L]

    But that code does not redirect all other pages i.e.

    HTML Code:
    www.my-web.com/subfolder/index.php?option=com_content&task=view&id...

    I am strugling to find a correct solution that would point all those index.php links from my subfolder site to the new root site.

    This is how the part of custom redirects in my .htaccess looks like:


    HTML Code:
    ## Begin - Custom redirects
    #
    RewriteRule ^subfolder\?$ "http\:\/\/www\.my\-web\.com\/" [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html?\ HTTP/
    RewriteRule ^(([^/]+/)*)index\.html?$ http://www.my-web.com/$1 [R=301,L]
    #
    RewriteCond %{THE_REQUEST} !^POST
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/
    RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
    RewriteRule ^(([^/]+/)*)index\.php$ http%2://www.my-web.com/$1 [R=301,L]
    #
    RewriteCond %{HTTP_HOST} !^(www\.my-web\.com)?$
    RewriteRule (.*) http://www.my-web.com/$1 [R=301,L]
    #
    ## End - Custom redirects
    With respect,
    nis4

  2. #2
    Certified Ethical Hacker silver trophybronze trophy dklynn's Avatar
    Join Date
    Feb 2002
    Location
    Auckland
    Posts
    14,650
    Mentioned
    19 Post(s)
    Tagged
    3 Thread(s)
    4,

    Welcome to SitePoint!

    Are your two Joomla installations sharing the same database?

    If so, that's great as it limits you to two problems:

    First, redirecting to the DocumentRoot is simple. All that is would be removing the subfolder (and that's one of the examples in my signature's tutorial).

    The second problem you referred to obliquely - convert OLD links (from Google) to the new link format. Since I've not studied how Joomla creates its SEO links, I can't comment on that except to say that it would be a smart thing to do to generate a new script in the subfolder which performs a lookup of the id (presuming that's the non SEF URI contents) and create an SEF version and redirect to the non-subfolder (DocumentRoot) version with a 200 status. That's not an insurmountable problem if you're reasonably proficient with PHP.

    Then, WHY IN THE WORLD DO YOU THINK YOU NEED TO ESCAPE EVERY CHARACTER IN YOUR REDIRECTIONS? You do not need to (read should NOT) escape any character in your redirection (assuming that you're following URI guidelines at http://www.ietf.org/rfc/rfc2396.txt, i.e., using allowed characters or encoding, not escaping, the reserved characters).

    Code:
    # Please use [code] ... [/code] for your mod_rewrite code
    
    RewriteEngine on
    RewriteRule ^subfolder(/[a-z.]+)?$ http://www.my-web.com$1 [R=301,L]
    Try that to resolve your first problem.

    Regards,

    DK
    David K. Lynn - Data Koncepts is a long-time WebHostingBuzz (US/UK)
    Client and (unpaid) WHB Ambassador
    mod_rewrite Tutorial Article (setup, config, test & write
    mod_rewrite regex w/sample code) and Code Generator

  3. #3
    SitePoint Member
    Join Date
    Feb 2013
    Posts
    2
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hi dklynn,

    They are using 2 diferrent db-s. The first website (the one in subfolder) was made by a person before me, and it was like that for a few years.
    Now i made a new website in the root, and would not like that users who click on old links (from external sources) or the ones that are still in google, to have a 404 page.

    Instead i think it is smarter to have a 301 redirect for less traffic loss.

    I tried your rewrite rule, but now the non sef urls from the subfolder generate a 404 page.

    I don't have experience in .htaccess, that is what i coud come up reading a few guidliness and tutorials.

    I would like to point out that i have deleted the .htaccess from the subfolder. This is the whole .htaccess from the root (with your rewrite rule code).

    It redirects the subfolder /old to roo corectly, but links in the /old subfolder that start with "/old/index.php...... are not being redirected. In my case they were active links, in your case they are 404 pages.

    Thank you for your time, i really appreciate it.

    ##
    # @package Joomla
    # @copyright Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.
    # @license GNU General Public License version 2 or later; see LICENSE.txt
    ##

    ##
    # READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
    #
    # The line just below this section: 'Options +FollowSymLinks' may cause problems
    # with some server configurations. It is required for use of mod_rewrite, but may already
    # be set by your server administrator in a way that dissallows changing it in
    # your .htaccess file. If using it causes your server to error out, comment it out (add # to
    # beginning of line), reload your site in your browser and test your sef url's. If they work,
    # it has been set by your server administrator and you do not need it set here.
    ##

    ## Can be commented out if causes errors, see notes above.
    # For security reasons, Option followsymlinks cannot be overridden.
    #Options +FollowSymLinks
    Options +SymLinksIfOwnerMatch

    ## 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 base64_encode data within the URL.
    RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
    # Block out any script that includes a <script> tag in URL.
    RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%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})
    # Return 403 Forbidden header and show the content of the root homepage
    RewriteRule .* index.php [F]
    #
    ## End - Rewrite rules to block out some common exploits.

    ## Begin - Custom redirects
    #
    RewriteRule ^old(/[a-z.]+)?$ http://www.my-web.com$1 [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html?\ HTTP/
    RewriteRule ^(([^/]+/)*)index\.html?$ http://www.my-web.com/$1 [R=301,L]
    #
    RewriteCond %{THE_REQUEST} !^POST
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/
    RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
    RewriteRule ^(([^/]+/)*)index\.php$ http%2://www.my-web.com/$1 [R=301,L]
    #
    RewriteCond %{HTTP_HOST} !^(www\.fis-bih\.com)?$
    RewriteRule (.*) http://www.my-web.com/$1 [R=301,L]
    #
    ## End - Custom redirects

    ##
    # 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.
    #
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    #
    # If the requested path and file is not /index.php and the request
    # has not already been internally rewritten to the index.php script
    RewriteCond %{REQUEST_URI} !^/index\.php
    # and the request is for something within the component folder,
    # or for the site root, or for an extensionless URL, or the
    # requested URL ends with one of the listed extensions
    RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
    # and the requested path and file doesn't directly match a physical file
    RewriteCond %{REQUEST_FILENAME} !-f
    # and the requested path and file doesn't directly match a physical folder
    RewriteCond %{REQUEST_FILENAME} !-d
    # internally rewrite the request to the index.php script
    RewriteRule .* index.php [L]
    #
    ## End - Joomla! core SEF Section.


Tags for this Thread

Bookmarks

Posting Permissions

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