1. Please take a little time for this simple survey! Thank you for participating!
    Dismiss Notice
  2. Dear Pleskians, please read this carefully! New attachments and other rules Thank you!
    Dismiss Notice
  3. Dear Pleskians, I really hope that you will share your opinion in this Special topic for chatter about Plesk in the Clouds. Thank you!
    Dismiss Notice

Subdomain - variable Mod Rewrite doesnt work. Please help

Discussion in 'Plesk for Linux - 8.x and Older' started by hp_solomon, Oct 16, 2005.

  1. hp_solomon

    hp_solomon Guest

    0
     
    simple rewriting rules worked on me like redirecting or renaming the URL in the same directory but when i tried to rewrite URL that has subdomains and folder it doesn't work. I don't know why.

    Here's the script I created on .htaccess located in my root website

    RewriteEngine on
    Options +FollowSymlinks
    RewriteCond %{REQUEST_URI}!^/index\.php
    RewriteCond %{HTTP_HOST}!^www\.
    RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com
    RewriteRule .* http://www.domain.com/viewforum.php?f=%1 [nc]

    What i want to achieve is that urls of

    http://variable.domain.com will access the page http://www.domain.com/viewforum.php?f=variable

    However, the address bar should still show http://variable.domain.com.

    This script doesnt work... I don't know why. This is the error i get from the page:

    ------------------
    This is the Pleskâ„¢ default page
    If you see this page it means:

    1) hosting for this domain is not configured
    or
    2) there's no such domain registered in Plesk.

    For more information please contact Administrator.
    ------------------



    Any Ideas? Please help, I've been researching the net and tried so many but still I failed.

    :(
     
  2. jamesyeeoc

    jamesyeeoc Guest

    0
     
    Rewrite subdomain to folder by proxy

    1) I did not test this in an .htaccess file, but rather, in the domain's vhost.conf file (/home/httpd/vhosts/domain.com/conf/vhost.conf)

    2) I don't have a forum installed on the docroot of the test domain, so I used a short viewforum.php with just:
    This is the rewrite section which will redirect the requests, pass the parameter, and not change the browser's URL:
    Code:
    <IfModule mod_rewrite.c>
    # Turn on the rewrite engine
    RewriteEngine on
    # Make sure all input is lowercase for comparison
    RewriteMap	lowercase	int:tolower
    
    # All sub names to be matched
    ServerAlias *.domain.com
    
    # Not index.php requested
    RewriteCond %{REQUEST_URI} !^/index.php
    
    # Not [url]www.[/url] requested
    RewriteCond %{HTTP_HOST} !^[url]www.domain.com[/url]$
    
    # subname present in request
    RewriteCond %{HTTP_HOST} ^(.+).domain.com
    
    # Do the PROXY redirect to preserve the browser URL
    RewriteRule .* [url]http://www.domain.com/viewforum.php?f=%1[/url] [L,P]
    </IfModule>
    
    Feel free to try putting it into your .htaccess if you like, but this has been tested to work in the domain's vhost.conf file in any case. It also assumes the domain's DNS has a wildcard entry.

    I browsed to 'aaa.domain.com' (which does not exist) and was shown 'aaa' by the echo script, browser URL still showed http://aaa.domain.com. Same thing for other subdomain names tested 'xyz', 'abc', etc.

    Hope this helps.

    If you wish to see it work, browse to:
    http://something.james-yee.net

    then

    http://www.james-yee.net/viewforum.php?f=something
    (replace 'something' with whatever random name you wish)

    I will leave this in place for a day or so.
     
  3. hp_solomon

    hp_solomon Guest

    0
     
    james, thanks for the reply.

    How can I add DNS wildcard entry in the plesk DNS page. I clicked the DNS page but there are options on the type of DNS that should be added, these are A, CNAME, TXT, etc.

    Please teach me on how to add the wildcard entry using the PLESK DNS page.

    The link you posted above doesn't work too...

    Thanks,
     
  4. jamesyeeoc

    jamesyeeoc Guest

    0
     
    Make sure you change the DOMAIN DNS, you can do the Server Template later to affect all newly created domains.

    1. Login to the control panel.

    2. Click on domains.

    3. Click on the domain you want to modify.

    4. Click on DNS.

    5. Select type CNAME

    6. Click ADD

    7. Put an asterisk in the "Enter Domain

    8. Name" field (the first field).

    9. Fill in the domain name with a period at the end in the second field. (The period is IMPORTANT)

    10. Click Ok.

    You have now put a wildcard CNAME entry for the domain into the domain's DNS.

    I'll have to relax my firewall, probably your IP is in one of the country blocks I have (even on my test servers).
    Ok, I've removed all the country blocks, so give it another try. At some point I will re-enable my full firewall...
     
  5. hp_solomon

    hp_solomon Guest

    0
     
    what name should i enter on the 2nd field? any name?

    is this valid? say

    subdomain.

    or

    anyname.

    (with a period at end)

    Thanks.
     
  6. jamesyeeoc

    jamesyeeoc Guest

    0
     
    If you wanted to create the subdomain wildcard entry "*.plesk.com", then in the second field you would enter: plesk.com. since the domain name is plesk.com

    The first field would be where you would put the subdomain name, in this case you put an asterisk character to make a 'wildcard' entry.

    Wildcard entries will allow any browser requested subdomain names for the domain to be directed to the proper domain. Without it, if I were to browse to "xyz.domain.com" but this subdomain had never been created on the domain, then I would receive an error that the URL could not be found or does not exist.
     
  7. hp_solomon

    hp_solomon Guest

    0
     
    I was able to add the wildcard entry on the dns page.

    My problem now is how to edit the vhost.conf file.

    then through SSH, i went to the directory but there is no such file.
    How can i create it? I typed on the command line:

    pico vhosts.conf

    but nothing happens, instead it returned:

    -bash: pico: command not found.

    Lastly, is this the whole code that should be entered in vhosts.conf? no begin tag for the file?

    <IfModule mod_rewrite.c>
    # Turn on the rewrite engine
    RewriteEngine on
    # Make sure all input is lowercase for comparison
    RewriteMap lowercase int:tolower

    # All sub names to be matched
    ServerAlias *.domain.com

    # Not index.php requested
    RewriteCond %{REQUEST_URI} !^/index.php

    # Not www. requested
    RewriteCond %{HTTP_HOST} !^www.domain.com$

    # subname present in request
    RewriteCond %{HTTP_HOST} ^(.+).domain.com

    # Do the PROXY redirect to preserve the browser URL
    RewriteRule .* http://www.domain.com/viewforum.php?f=%1 [L,P]
    </IfModule>




    Thanks,
     
  8. hp_solomon

    hp_solomon Guest

    0
     
    i created the file using vi using the exact code you posted, replacing domain.com to my domain.com

    But still doesnt work. Should i restart the server? or apache? I also noticed that in your code, it doesnt have a slash "/" before the dot (.) of the domain name, is this ok?

    Thanks,
     
  9. jamesyeeoc

    jamesyeeoc Guest

    0
     
    After making any changes to apache conf files, you need to do the following:

    /usr/local/psa/admin/bin/websrvmng -u --vhost-name=domain.com

    restart apache service


    (replace domain.com with the actual domain name)
     
  10. hp_solomon

    hp_solomon Guest

    0
     
    My hosting said that i should run

    /usr/local/psa/admin/bin/websrvmng -a -v

    but failed

    it says

    httpd failed to gracefully restart.


    i think there is a syntax error.. my hosting said

    RewriteMap takes two arguments, a mapname and a filename

    RewriteMap lowercaseint:tolower


    what should i run?
    /usr/local/psa/admin/bin/websrvmng -a -v

    or

    /usr/local/psa/admin/bin/websrvmng -u --vhost-name=domain.com


    thanks.
     
  11. hp_solomon

    hp_solomon Guest

    0
     
    ok.. i fixed the vhost.conf. i missed the space between lowercase and int, my bad. sorry.

    Now i got a new problem

    all images, css, all links are now gone.. they are now pointed relative to the subdomain, not to the document root of the domain name...

    Any solution to this? a rewrite rule maybe? or should i update all links to absolutely map from the document root of domain name.

    please advice. Thanks.
     
  12. jamesyeeoc

    jamesyeeoc Guest

    0
     
    When you begin messing with rewriting URI/URLs sometimes paths do need to be adjusted from relative to hard.

    Since you asked to rewrite a 'variable' subdomain name, then paths really should be hard paths, not relative.

    To tell you the truth, this is the first time I have ever seen anyone want to do this.
     
  13. hp_solomon

    hp_solomon Guest

    0
     
    ah ok... I'll just hard coded it then...

    Thank you very much for the help... :)

    by the way, is rewriting URLs takes up too much server resources? like the way i did?
     
  14. jamesyeeoc

    jamesyeeoc Guest

    0
     
    I guess that depends on your server specs and how busy the server gets. In general, I don't think I've ever seen or heard of a decent server getting bogged down due to rewrites, I wouldn't worry about it.

    Additional note about the websrvmng command: Plesk recommends doing the -v -a command, but there appears to be times when that doesn't do the trick. I have never seen the full -u --vhost-name=domain.com command not do what it is supposed to.
     
  15. hp_solomon

    hp_solomon Guest

    0
     
    the site is a music site that offers free forum for registered bands.

    To access the bands forum you need to go to the viewforum.php page passing the band id or the band name as a parameter.

    It would be easier and better for bands and members of the community if all bands have their own subdomain.

    And with your help I was able to achive to rewrite URLs to make it seem like a real subdomain. Thanks.

    I'm not yet complete with making the links absolute to make the images and links work properly.

    Now i got a new problem. When I logged in to the site and go to the page using a link or typing the URL of the fake subdomain , my session dissapeared. Everytime I go to the page even I am logged in, I was logged out or not totally logged out because when i go back to the page without the subdomain, i was logged in again.

    Seems like using the subdomain my session dissapeared but the session is there when i go back to the page without the subdomain.

    Is there a way to maintain a single session to multiple subdomain, or is there a solution to fix this issue. Any advice.?

    Please help.

    Thank you very much.
     
  16. hp_solomon

    hp_solomon Guest

    0
     
    Here is the directory structure of the site when i access it through FTP:
    bin
    cgi-bin
    conf
    error_docs
    etc
    httpdocs ---> root folder of the site... and the root of phpbb
    lib
    pd
    private
    subdomains ---> empty, no folders and files
    tmp
    usr
    var
    web_user


    I think the solution to this is to point all my subdomain to the directory root of my domain name. that is on /httpdocs/ directory.

    How can i point all my subdomains to the root directory of my main subdomain? Or how can i make my subdomains be under the root domain directory.


    Please help.

    I hope someone can help me for I am trying to fix this for more than a week now. Thank you very much.
     
  17. hp_solomon

    hp_solomon Guest

    0
     
  18. hp_solomon

    hp_solomon Guest

    0
     
    Found this script on other threads

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteMap lowercase int:tolower
    ServerAlias *.domain.com
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.domain.com$
    RewriteCond %{HTTP_HOST} !^chat\.domain.com$
    RewriteCond %{HTTP_HOST} !^webmail\.domain.com$
    RewriteCond %{HTTP_HOST} ^[^.]+\.domain.com$
    RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
    RewriteRule ^([^.]+)\.domain.com(.*) /home/httpd/vhosts/domain.com/httpdocs/$1$2
    </IfModule>


    will this work on my situation.. Changing the previously created script to:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteMap lowercase int:tolower
    ServerAlias *.domain.com
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteCond %{HTTP_HOST} !^www.domain.com$
    RewriteCond %{HTTP_HOST} !^webmail\.domain.com$
    RewriteCond %{HTTP_HOST} ^[^.]+\.domain.com$
    RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
    RewriteRule .* http://www.domain.com/viewforum.php?f=%1 [P]
    RewriteRule ^([^.]+).domain.com(.*) /home/httpd/vhosts/domain.com/httpdocs/$2 [L]
    </IfModule>


    Any ideas?
     
  19. ShadowMan@

    ShadowMan@ Guest

    0
     
    Sorry I'm too tired to read the entire thread, but looking at your version of what you found elsewhere will not work properly at all. At the moment, all I can recommend is that you do some reading on Apache's mod_rewrite. I would dissect it and try to fix it, but I really am too tired right now.

    http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
    http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

    I know their docs are a bit cryptic at times, but you will see some of the blatant errors in what you have added/changed in your version.
     
  20. hp_solomon

    hp_solomon Guest

    0
     
    Thanks for the reply Shadowman, i tried to read the link you posted, and tried some script too, but still I failed. I can't find the right script ...

    I'm sure I only need the right script for the mod_rewrite to work it properly. If your not too busy or if you find time, can you please help me provide the right script, I'm sure it will only take u a minute or 10. :D You are my hope.

    Thank you very much...
     
Loading...