SitePoint Sponsor

User Tag List

Results 1 to 8 of 8
  1. #1
    SitePoint Evangelist tangledman's Avatar
    Join Date
    Sep 2005
    Location
    Puerto de Mazarron, Murcia, Spain
    Posts
    425
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Moved website to a subfolder, need to get the rewrites working

    Hi Sitepointers,

    I have moved a website from www.domain.com to www.domain.com/subfolder

    I need to get the url rewrites working

    Previously my .htaccess file looked like

    RewriteEngine on
    RewriteBase /
    RewriteRule ^/?account$ /index.php?get_action=account [L]

    I thought it would be just a simple case of adding the subfolder name to the RewriteBase ...
    RewriteEngine on
    RewriteBase /subfolder/
    RewriteRule ^/?account$ /index.php?get_action=account [L]

    However that doesn't work.

    Any ideas?

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

    The FIRST thing to learn about mod_rewrite is when NOT to use it. Since mod_alias handles your specific task very nicely, that's what I'd use:

    Code:
    Redirect 301 / /subfolder/
    Since that looks like it would be "loopy," you could fall back on mod_rewrite:

    Code:
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^subfolder/
    RewriteRule .? subfolder%{REQUEST_URI} [R=301,L]
    There's just too much wrong with your attempt to cover ... and I've addressed exactly those issues many times in many threads. Therefore, you might benefit from reading the mod_rewrite tutorial linked in my signature as it contains explanations and sample code. It's helped may members and should help you, too

    Of course, the REAL answer is simply to move the contents of subfolder into the DocumentRoot and delete the subfolder. Alternatively, simply redefine your DocumentRoot to the location of the subfolder.

    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 Evangelist tangledman's Avatar
    Join Date
    Sep 2005
    Location
    Puerto de Mazarron, Murcia, Spain
    Posts
    425
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    David,

    With respect ...this isn't very helpful and is close to being arrogant, or is that Kiwi humour?

    "There's just too much wrong with your attempt to cover ... and I've addressed exactly those issues many times in many threads"

    I tried searching google before posting and couldn't find what I needed. I have looked through some of your posts your and can't find what I'm looking for.

    your "Redirect 301 / /subfolder/" doesn't solve because there is an active website in the main folder.

    I would like to know what I have to put in .htaccess held in the sub folder to redirect a user visiting

    www.domain.com/subfolder/account

    to

    http://www.domain.com/subfolder/inde...action=account

    I thought it would just be a question of stating what to use as the base, however it's not that simple.

    "Of course, the REAL answer is simply to move the contents of subfolder into the DocumentRoot and delete the subfolder. Alternatively, simply redefine your DocumentRoot to the location of the subfolder."

    Again I can't do that, because the current website is there.

  4. #4
    Foozle Reducer ServerStorm's Avatar
    Join Date
    Feb 2005
    Location
    Burlington, Canada
    Posts
    2,699
    Mentioned
    89 Post(s)
    Tagged
    6 Thread(s)
    Quote Originally Posted by tangledman View Post
    Hi Sitepointers,

    I have moved a website from www.domain.com to www.domain.com/subfolder

    I need to get the url rewrites working

    Previously my .htaccess file looked like

    RewriteEngine on
    RewriteBase /
    RewriteRule ^/?account$ /index.php?get_action=account [L]

    I thought it would be just a simple case of adding the subfolder name to the RewriteBase ...
    RewriteEngine on
    RewriteBase /subfolder/
    RewriteRule ^/?account$ /index.php?get_action=account [L]

    However that doesn't work.

    Any ideas?
    Hi tangledman,

    Do you need both the www.domain.com to www.domain.com/subfolder sites to work at the same time? If not why not change the default location of your virtual host file then when apache makes a request to that site it will use your files and run the .htaccess file you have in the sub folder.
    ictus==""

  5. #5
    SitePoint Wizard bronze trophy PicnicTutorials's Avatar
    Join Date
    Dec 2007
    Location
    Carlsbad, California, United States
    Posts
    3,656
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)
    Hello. You should be able to simply say this if the subfolder is the same for all files...

    redirect 301 / http://www.domain.com/subfolder/

  6. #6
    SitePoint Evangelist tangledman's Avatar
    Join Date
    Sep 2005
    Location
    Puerto de Mazarron, Murcia, Spain
    Posts
    425
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hello all,

    @serverstorm

    "Do you need both the www.domain.com to www.domain.com/subfolder sites to work at the same time?" - Yes.

    I have the current website running in root

    I have the new website running in the subfolder

    This is what I have in the .htaccess in the subfolder

    RewriteEngine on
    RewriteBase /
    RewriteRule ^/?account$ /index.php?get_action=account [L]
    RewriteRule ^/?advert$ /index.php?get_action=advert [L]
    RewriteRule ^/?affiliates$ /index.php?get_action=affiliates [L]
    RewriteRule ^/?agent$ /index.php?get_action=agent [L]
    RewriteRule ^/?agent_admin$ /index.php?get_action=agent_admin [L]

    I want it so the when I visit www.domain.com/subfolder/advert it gets re directed to http://www.domain.com/subfolder/inde...on=agent_admin



    This is what I have in the .htaccess in the root.

    #
    # Apache/PHP/Drupal settings:
    #

    # Protect files and directories from prying eyes.
    <FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
    Order allow,deny
    </FilesMatch>

    # Don't show directory listings for URLs which map to a directory.
    Options -Indexes

    # Follow symbolic links in this directory.
    Options +FollowSymLinks

    # Make Drupal handle any 404 errors.
    ErrorDocument 404 /index.php

    # Force simple error message for requests for non-existent favicon.ico.
    <Files favicon.ico>
    # There is no end quote below, for compatibility with Apache 1.3.
    ErrorDocument 404 "The requested file favicon.ico was not found.
    </Files>

    # Set the default handler.
    DirectoryIndex index.php

    # Override PHP settings. More in sites/default/settings.php
    # but the following cannot be changed at runtime.

    # PHP 4, Apache 1.
    <IfModule mod_php4.c>
    php_value magic_quotes_gpc 0
    php_value register_globals 0
    php_value session.auto_start 0
    php_value mbstring.http_input pass
    php_value mbstring.http_output pass
    php_value mbstring.encoding_translation 0
    </IfModule>

    # PHP 4, Apache 2.
    <IfModule sapi_apache2.c>
    php_value magic_quotes_gpc 0
    php_value register_globals 0
    php_value session.auto_start 0
    php_value mbstring.http_input pass
    php_value mbstring.http_output pass
    php_value mbstring.encoding_translation 0
    </IfModule>

    # PHP 5, Apache 1 and 2.
    <IfModule mod_php5.c>
    php_value magic_quotes_gpc 0
    php_value register_globals 0
    php_value session.auto_start 0
    php_value mbstring.http_input pass
    php_value mbstring.http_output pass
    php_value mbstring.encoding_translation 0
    </IfModule>

    # Requires mod_expires to be enabled.
    <IfModule mod_expires.c>
    # Enable expirations.
    ExpiresActive On

    # Cache all files for 2 weeks after access (A).
    ExpiresDefault A1209600

    <FilesMatch \.php$>
    # Do not allow PHP scripts to be cached unless they explicitly send cache
    # headers themselves. Otherwise all scripts would have to overwrite the
    # headers set by mod_expires if they want another caching behavior. This may
    # fail if an error occurs early in the bootstrap process, and it may cause
    # problems if a non-Drupal PHP file is installed in a subdirectory.
    ExpiresActive Off
    </FilesMatch>
    </IfModule>

    # Various rewrite rules.
    <IfModule mod_rewrite.c>
    RewriteEngine on

    # If your site can be accessed both with and without the 'www.' prefix, you
    # can use one of the following settings to redirect users to your preferred
    # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
    #
    # To redirect all users to access the site WITH the 'www.' prefix,
    # (http://example.com/... will be redirected to http://www.example.com/...)
    # adapt and uncomment the following:
    # RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
    # RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
    #
    # To redirect all users to access the site WITHOUT the 'www.' prefix,
    # (http://www.example.com/... will be redirected to http://example.com/...)
    # uncomment and adapt the following:
    # RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
    # RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

    # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
    # VirtualDocumentRoot and the rewrite rules are not working properly.
    # For example if your site is at http://example.com/drupal uncomment and
    # modify the following line:
    # RewriteBase /drupal
    #
    # If your site is running in a VirtualDocumentRoot at http://example.com/,
    # uncomment the following line:
    # RewriteBase /

    # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    </IfModule>

    # $Id: .htaccess,v 1.90.2.5 2010/02/02 07:25:22 dries Exp $

  7. #7
    SitePoint Evangelist tangledman's Avatar
    Join Date
    Sep 2005
    Location
    Puerto de Mazarron, Murcia, Spain
    Posts
    425
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I thought I'd got this working by adding this to the .htaccess file in the root directory.

    RewriteEngine On
    RewriteRule ^/?account$ /subfolder/index.php?get_action=account [L]
    RewriteRule ^/?advert$ /subfolder/index.php?get_action=advert [L]
    RewriteRule ^/?affiliates$ /subfolder/index.php?get_action=affiliates [L]
    RewriteRule ^/?agent$ /subfolder/index.php?get_action=agent [L]
    etc...

    however now every time I visit a link in the subfolder, the page opens in a new tab.

    Help me or send booze, please.

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

    Quote Originally Posted by tangledman View Post
    I thought I'd got this working by adding this to the .htaccess file in the root directory.

    Code:
    RewriteEngine On
    RewriteRule ^/?account$ /subfolder/index.php?get_action=account [L]
    RewriteRule ^/?advert$ /subfolder/index.php?get_action=advert [L]
    RewriteRule ^/?affiliates$ /subfolder/index.php?get_action=affiliates [L]
    RewriteRule ^/?agent$ /subfolder/index.php?get_action=agent [L]
    # etc...
    however now every time I visit a link in the subfolder, the page opens in a new tab.

    Help me or send booze, please.
    No booze required as that looks fine (except the /? after the start anchor - Apache 1.x "in the wild" is rare and Apache 2.x does not need the leading / and you should know which version of the server you're using). As for the leading / in the redirection, they are not required when you're redirecting from the DocumentRoot and will only make Apache look to the server's root directory first but that will only cause a miniscule delay in serving your subfolder/index.php script.

    Pages opening in a new tab are usually directed to do so by the link (e.g., target=_blank). Moreover, mod_rewrite can't open a new browser window or tab so this problem is within your script's code.

    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


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
  •