Apache URL Rewriting

This is a discussion on Apache URL Rewriting within the Apache Web Server forums, part of the Web Server and Related Forums category; Hi Everyone, If anybody could tell here, the logic behind an expression matching . I needed to tweak an apache expression ...


Go Back   Usenet Forums > Web Server and Related Forums > Apache Web Server

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 03-24-2006
sanjay
 
Posts: n/a
Default Apache URL Rewriting

Hi Everyone,

If anybody could tell here,
the logic behind an expression matching .
I needed to tweak an apache expression matching to suit my
subdomain's url rewriting .

<VirtualHost *>
ServerName aaa.domain.com
RedirectMatch (.*)\ .*$ https://www.domain.com/aaa$1
------x-------
This match is confirming any url like below,

=> bbb.domain.com
=> https://www.bbb.domain.com/index.jsp
=> www.bbb.domain.com
=>domain.com/bbb

rediected to as following ,

=>https://www.domain.com/bbb/index.jsp
=>https://www.domain.com/bbb/


Now i cann't figure out whats the function of $1 in the Redirectmatch
here
and what how exactly the expression (.*)\.*$ is working ..

Regards...

  #2 (permalink)  
Old 03-24-2006
Robert Ionescu
 
Posts: n/a
Default Re: Apache URL Rewriting

sanjay wrote:
> RedirectMatch (.*)\ .*$ https://www.domain.com/aaa$1
> ------x-------


will never end up in

> =>https://www.domain.com/bbb/index.jsp


For two reasons:
The redirect would always go to /aaa and not /bbb - this is impossible.

The RegEx (.*)\ .*$ would not work and should end up in an internal
server error. To use a space, you must use double quotes "(.*) .*$" The
way you used escaping the space will work for mod_rewrite only.

And third: Your request did not contain a space, so the regEx won't match.

> Now i cann't figure out whats the function of $1 in the Redirectmatch
> here


It captures the result of the first group of the RegEx, called
backreference. See pcre man page, http://www.pcre.org/pcre.txt

--
Robert
  #3 (permalink)  
Old 03-25-2006
sanjay
 
Posts: n/a
Default Re: Apache URL Rewriting

Hi Robert,

Very sorry .., my fault in writing the below line,
I wrote :
RedirectMatch (.*)\ .*$ https://www.domain.com/aaa$1
It should be :
RedirectMatch (.*)\ .*$ https://www.domain.com/bbb$1

My situation as an admin is,
i have to tweak the url
rewriting sequence to come up with a solution
for my apache+tomcat production server. The setting which i posted (
please consider the amendment posted today) is successfully redirecting
urls from "http://subdomain.domain.com" to
"https://www.domain.com/subdoain/" .

Now i am failing to understand one thing out of my configuration, as i
mentioned what the "$1" is functioning for, and what are deciding this
url redirect function . If you guies out here would feel interested, i
would show what changes i made for which the url redirection just
ceased to function.
I need to put a single line modify in my httpd.conf for load balancing
and that change made the url rewrite malfunction , outputing " page not
found 404 error"

Waiting for your comments ..

Thanks and regards..

Sanjay Saha
System Administrator
www.sanjaysaha.in
Robert Ionescu wrote:
> sanjay wrote:
> > RedirectMatch (.*)\ .*$ https://www.domain.com/aaa$1
> > ------x-------

>
> will never end up in
>
> > =>https://www.domain.com/bbb/index.jsp

>
> For two reasons:
> The redirect would always go to /aaa and not /bbb - this is impossible.
>
> The RegEx (.*)\ .*$ would not work and should end up in an internal
> server error. To use a space, you must use double quotes "(.*) .*$" The
> way you used escaping the space will work for mod_rewrite only.
>
> And third: Your request did not contain a space, so the regEx won't match.
>
> > Now i cann't figure out whats the function of $1 in the Redirectmatch
> > here

>
> It captures the result of the first group of the RegEx, called
> backreference. See pcre man page, http://www.pcre.org/pcre.txt
>
> --
> Robert


  #4 (permalink)  
Old 03-25-2006
Sanjay
 
Posts: n/a
Default Re: Apache URL Rewriting

Hi Sanjay,

Its not possible to get the eaxct problem .
I can understand your url rewriting needs some tweak , but as per my
knowledge here other
factors as well could contribute to errors .
It would be clearer to have the configs.

sanjay wrote:
> Hi Robert,
>
> Very sorry .., my fault in writing the below line,
> I wrote :
> RedirectMatch (.*)\ .*$ https://www.domain.com/aaa$1
> It should be :
> RedirectMatch (.*)\ .*$ https://www.domain.com/bbb$1
>
> My situation as an admin is,
> i have to tweak the url
> rewriting sequence to come up with a solution
> for my apache+tomcat production server. The setting which i posted (
> please consider the amendment posted today) is successfully redirecting
> urls from "http://subdomain.domain.com" to
> "https://www.domain.com/subdoain/" .
>
> Now i am failing to understand one thing out of my configuration, as i
> mentioned what the "$1" is functioning for, and what are deciding this
> url redirect function . If you guies out here would feel interested, i
> would show what changes i made for which the url redirection just
> ceased to function.
> I need to put a single line modify in my httpd.conf for load balancing
> and that change made the url rewrite malfunction , outputing " page not
> found 404 error"
>
> Waiting for your comments ..
>
> Thanks and regards..
>
> Sanjay Saha
> System Administrator
> www.sanjaysaha.in
> Robert Ionescu wrote:
> > sanjay wrote:
> > > RedirectMatch (.*)\ .*$ https://www.domain.com/aaa$1
> > > ------x-------

> >
> > will never end up in
> >
> > > =>https://www.domain.com/bbb/index.jsp

> >
> > For two reasons:
> > The redirect would always go to /aaa and not /bbb - this is impossible.
> >
> > The RegEx (.*)\ .*$ would not work and should end up in an internal
> > server error. To use a space, you must use double quotes "(.*) .*$" The
> > way you used escaping the space will work for mod_rewrite only.
> >
> > And third: Your request did not contain a space, so the regEx won't match.
> >
> > > Now i cann't figure out whats the function of $1 in the Redirectmatch
> > > here

> >
> > It captures the result of the first group of the RegEx, called
> > backreference. See pcre man page, http://www.pcre.org/pcre.txt
> >
> > --
> > Robert


  #5 (permalink)  
Old 03-25-2006
sanjay
 
Posts: n/a
Default Re: Apache URL Rewriting

Hi every body ,

with relation to my above question,
here is the
config files . For your ease of understanding -- i put the
"==>" sign before the relevant lines , so that you can save your time
from unnecessary details.

<1> httpd.conf ( The actual files have customised names:apache2.conf +
ports.conf + 099-stats.conf + defaults + 001-domain-http +
010-domain-https )
<2> vhost.conf (the actual file name :011-subnetworks)
<3>mod_jk.conf (The actual file names are : jk2.conf + jk2.load)
<4>The tomcat config related files " server.xml" and worker related
"worker.properties" are not shown.
<5> the "web.xml" relevan lines shown .

--------------------------------
"011-subnetworks" ( at sites-enabled directory )
------------------

<VirtualHost *>
ServerName bbb.domain.com
==> RedirectMatch (.*)\.*$ https://www.domain.com/bbb$1
</VirtualHost>
|
|
|
<VirtualHost *>
ServerName ddd.domain.com
==> RedirectMatch (.*)\.*$ https://www.domain.com/ddd$1
</VirtualHost>
---------
apache2.conf
---------

# Based upon the NCSA server configuration files
originally by Rob McCool.
# Changed extensively for the Debian package by Daniel
Stone <daniel@sfarc.net>
# and also by Thom May <thom@debian.org>.

# ServerRoot: The top of the directory tree under
which the server's
# configuration, error, and log files are kept.
#
# NOTE! If you intend to place this on an NFS (or
otherwise network)
# mounted filesystem then please read the LockFile
documentation
# (available at
<URL:http://www.apache.org/docs/mod/core.html#lockfile>);
# you will save yourself a lot of trouble.

ServerRoot "/etc/apache2"

# The LockFile directive sets the path to the lockfile
used when Apache
# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT
or
# USE_FLOCK_SERIALIZED_ACCEPT. This directive should
normally be left at
# its default value. The main reason for changing it
is if the logs
# directory is NFS mounted, since the lockfile MUST BE
STORED ON A LOCAL
# DISK. The PID of the main server process is
automatically appended to
# the filename.

LockFile /var/lock/apache2/accept.lock

# PidFile: The file in which the server should record
its process
# identification number when it starts.

PidFile /var/run/apache2.pid

# Timeout: The number of seconds before receives and
sends time out.

Timeout 300

# KeepAlive: Whether or not to allow persistent
connections (more than
# one request per connection). Set to "Off" to
deactivate.

KeepAlive On

# MaxKeepAliveRequests: The maximum number of requests
to allow
# during a persistent connection. Set to 0 to allow an
unlimited amount.
# We recommend you leave this number high, for maximum
performance.

MaxKeepAliveRequests 100

# KeepAliveTimeout: Number of seconds to wait for the
next request from the
# same client on the same connection.

KeepAliveTimeout 15

##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers ......... number of server processes to
start
# MinSpareServers ...... mini( under sites-enabled
directory )mum number of server processes which are
kept spare
# MaxSpareServers ...... maximum number of server
processes which are kept spare
# MaxClients ........... maximum number of server
processes allowed to start
# MaxRequestsPerChild .. maximum number of requests a
server process serves
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 20
MaxRequestsPerChild 0
</IfModule>

# pthread MPM
# StartServers ......... initial number of server
processes to start
# MaxClients ........... maximum number of server
processes allowed to start
# MinSpareThreads ...... minimum number of worker
threads which are kept spare
# MaxSpareThreads ...... maximum number of worker
threads which are kept spare
# ThreadsPerChild ...... constant number of worker
threads in each server process
# MaxRequestsPerChild .. maximum number of requests a
server process serves
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

# perchild MPM
# NumServers ........... constant number of server
processes
# StartThreads ......... initial number of worker
threads in each server process
# MinSpareThreads ...... minimum number of worker
threads which are kept spare
# MaxSpareThreads ...... maximum number of worker
threads which are kept spare
# MaxThreadsPerChild ... maximum number of worker
threads in each server process
# MaxRequestsPerChild .. maximum number of
connections per server process (then it dies)
<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
AcceptMutex fcntl
</IfModule>

User www-data
Group www-data

# The following directives define some format
nicknames for use with
# a CustomLog directive (see below).
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent


# Global error log.
ErrorLog /var/log/apache2/error.log

# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

# Include all the user configurations:
Include /etc/apache2/httpd.conf

# Include ports listing( under sites-enabled directory
)
Include /etc/apache2/ports.conf

# Include generic snippets of statements
Include /etc/apache2/conf.d/[^.#]*

#Let's have some Icons, shall we?
Alias /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

# Set up the default error docs.
#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external
redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402
http://www.example.com/subscription_info.html
#

#
# Putting this all together, we can Internationalize
error responses.
#
# We use Alias to redirect any
/error/HTTP_<error>.html.var response to
# our collection of by-error message multi-language
collections. We use
# includes to substitute the appropriate text.
#
# You can modify the messages' appearance without
changing any of the
# default HTTP_<error>.html.var files by adding the
line;
#
# Alias /error/include/ "/your/include/path/"
#
# which allows you to create your own set of files by
starting with the
# /usr/local/apache2/error/include/ files and
# copying them to /your/include/path/, even on a
per-VirtualHost basis.
#

<IfModule mod_negotiation.c>
<IfModule mod_include.c>
Alias /error/ "/usr/share/apache2/error/"

<Directory "/usr/share/apache2/error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en es de fr
ForceLanguagePriority Prefer Fallback
</Directory>

ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
ErrorDocument 401
/error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
ErrorDocument 405
/error/HTTP_METHOD_NOT_ALLOWED.html.var
ErrorDocument 408
/error/HTTP_REQUEST_TIME_OUT.html.var
ErrorDocument 410 /error/HTTP_GONE.html.var
ErrorDocument 411
/error/HTTP_LENGTH_REQUIRED.html.var
ErrorDocument 412
/error/HTTP_PRECONDITION_FAILED.html.var
ErrorDocument 413
/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
ErrorDocument 414
/error/HTTP_REQUEST_URI_TOO_LARGE.html.var
ErrorDocument 415
/error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 500
/error/HTTP_INTERNAL_SERVER_ERROR.html.var
ErrorDocument 501
/error/HTTP_NOT_IMPLEMENTED.html.var
ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
ErrorDocument 503
/error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 506
/error/HTTP_VARIANT_ALSO_VARIES.html.var

</IfModule>
</IfModule>

DirectoryIndex index.html index.cgi index.pl index.php
index.xhtml

# UserDir is now a module
#UserDir public_html
#UserDir disabled root

#<Directory /home/*/public_html>
# AllowOverride FileInfo AuthConfig Limit
# Options Indexes SymLinksIfOwnerMatch IncludesNoExec
#</Directory>

AccessFileName .htaccess

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

UseCanonicalName Off

TypesConfig /etc/mime.types
DefaultType text/plain

HostnameLookups Off

IndexOptions FancyIndexing VersionSort

AddIconByEncoding (CMP,/icons/compressed.gif)
x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

# This really should be .jpg.

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh
..tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^


# This is from Matty J's patch. Anyone want to make
the icons?
#AddIcon /icons/dirsymlink.jpg ^^SYMDIR^^
#AddIcon /icons/symlink.jpg ^^SYMLINK^^

DefaultIcon /icons/unknown.gif

ReadmeName README.html
HeaderName HEADER.html

IndexIgnore .??* *~ *# HEADER* RCS CVS *,t

AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage ko .ko
AddLanguage pt .pt
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw

LanguagePriority en da nl et fr de el it ja ko no pl
pt pt-br ltz ca es sv tw


#AddDefaultCharset ISO-8859-1

AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr
..iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
# For russian, more than one charset is used (depends
on client, mostly):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8

AddCharset GB2312 .gb2312 .gb
AddCharset utf-7 .utf7
AddCharset utf-8 .utf8
AddCharset big5 .big5 .b5
AddCharset EUC-TW .euc-tw
AddCharset EUC-JP .euc-jp
AddCharset EUC-KR .euc-kr
AddCharset shift_jis .sjis

#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps

AddType application/x-tar .tgz

# To use CGI scripts outside /cgi-bin/:
#
#AddHandler cgi-script .cgi

# To use server-parsed HTML files
#
<FilesMatch "\.shtml(\..+)?$">
SetOutputFilter INCLUDES
</FilesMatch>

# If you wish to use server-parsed imagemap files, use
#
#AddHandler imap-file map

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0
force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

#
# The following directive disables redirects on
non-GET requests for
# a directory that does not include the trailing
slash. This fixes a
# problem with Microsoft WebFolders which does not
appropriately handle
# redirects for folders with DAV methods.
#

BrowserMatch "Microsoft Data Access Internet
Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully

# Allow server status reports, with the URL of
http://servername/server-status
# Change the ".your_domain.com" to match your domain
to enable.
#
#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#</Location>

# Allow remote server configuration reports, with the
URL of
# http://servername/server-info (requires that
mod_info.c be loaded).
# Change the ".your_domain.com" to match your domain
to enable.
#
#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#</Location>

# Include the virtual host configurations:
==>Include /etc/apache2/sites-enabled/[^.#]*

------------
ports.conf
-------------

Listen 80
Listen 443
Listen 442

--------
099-stats ( under /etc/apache2/sites-enabled directory)
-------

NameVirtualHost *:442
<VirtualHost *:442>
==> ServerName stats.domain.com
ServerAdmin webmaster@domain.com

SSLEngine on

SSLCertificateFile
/usr/projects/domain/certs/www.domain.com.crt
SSLCertificateKeyFile
/usr/projects/domain/certs/www.domain.com.key
SSLCACertificateFile
/usr/projects/domain/certs/www.domain.com.ca.crt


==> DocumentRoot /var/www/htdocs
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /var/www/htdocs/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

# This provides worldwide access to everything below
the directory
# Security concerns:
# * Raw log processing data is accessible too for
everyone
# * The directory is by default writable by the
httpd daemon, so if
# any PHP, CGI or other script can be tricked
into copying or
# symlinking stuff here, you have a looking glass
into your server,
# and if stuff can be uploaded to here, you have
a public warez site!
<Directory /var/lib/awstats>
Options None
AllowOverride None
Order allow,deny
Allow from all

AuthType Basic
AuthName "cgi-bin"
AuthUserFile /etc/apache2/domain-htpasswd
Require valid-user
</Directory>

# This provides worldwide access to everything below
the directory
# Security concerns: none known
<Directory /usr/share/awstats/icon>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

# This provides worldwide access to everything in
the directory
# Security concerns: none known
Alias /awstats-icon/ /usr/share/awstats/icon/

# This (hopefully) enables _all_ CGI scripts in the
default directory
# Security concerns: Are you sure _all_ CGI scripts
are safe?
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all

AuthType Basic
AuthName "cgi-bin"
AuthUserFile /etc/apache2/domain-htpasswd
Require valid-user
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice,
warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>

----------
httpd.conf
----------
# This is here for backwards compatability reasons and
to support
# installing 3rd party modules directly via apxs2,
rather than
# through the /etc/apache2/mods-{available,enabled}
mechanism.
#
#LoadModule mod_placeholder
/usr/lib/apache2/modules/mod_placeholder.so

#JkMount /* domain_wrks

--------
jk2.conf
--------
# To enable mod_jk2, customize workers2.properties*
from
# /usr/share/doc/libapache2-mod-jk2/examples and copy
it to
# /etc/apache2/workers2.properties. Then uncomment the
following line:
#JkSet config.file /etc/apache2/workers2.properties
<IfModule mod_jk.c>
JkWorkersFile /etc/apache2/workers2.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel error
</IfModule>

-----------
jk2.load
-----------
#oadModule jk2_module
/usr/lib/apache2/modules/mod_jk2.so
LoadModule jk_module
/usr/lib/apache2/modules/mod_jk.so

---------
defaults
---------
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default
start page
# in /apache2-default/, but still have
/ go to the right place
RedirectMatch ^/$ /apache2-default/
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn,
error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

-------------------------------
001domain-http ( under /etc/apache2/sites-enabled directory )
-----------------------------
NameVirtualHost *
<VirtualHost *>
ServerName www.domain.com
ServerAdmin webmaster@domain.com

==> JkMount /* domain_wrks

==> DocumentRoot /usr/projects/domain/htdocs
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /usr/projects/domain/htdocs/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn,
error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

</VirtualHost>

--------------------------------
010-domain-https ( under /etc/apache2/sites-enabled directory )
-------------------------------
NameVirtualHost *:443
<VirtualHost *:443>
ServerName www.domain.com
ServerAdmin webmaster@domain.com

==> JkMount /* domain_wrks

SSLEngine on

SSLCertificateFile
/usr/projects/domain/certs/www.domain.com.crt
SSLCertificateKeyFile
/usr/projects/domain/certs/www.domain.com.key
SSLCACertificateFile
/usr/projects/domain/certs/www.domain.com.ca.crt


DocumentRoot /usr/projects/domain/htdocs
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /usr/projects/domain/htdocs/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
# <Directory "/usr/lib/cgi-bin">
# Need mod_jk 1.2.7 have 1.2.6
# JkUnmount /cgi-bin domain_wrks
# AllowOverride None
# Options ExecCGI -MultiViews
+SymLinksIfOwnerMatch
# Order allow,deny
# Allow from all

# AuthType Basic
# AuthName "cgi-bin"
# AuthUserFile /etc/apache2/domain-htpasswd
# Require valid-user
# </Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn,
error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

</VirtualHost>
-----------------
web.xml
-----------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

|
|
|
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
------------------------------
Now the logic here at the apache configuration is
accepting all http request and forward it to tomcat
which will serv all the content basically nonstatic (i.e all dynamic )
..
[ the configuration
allowed to put the url" http://bbb.domain.com "to browser; the
redirected
url then would be "www.domain.com/bbb/index.jsp". ]


Now due to load balance we are to change the logic and
pass only " *.jsp " to tomcat. The bbb subdomain
should be working as earlier

My modifications were.
1> adding index.jsp to "DirectoryIndex" at "apache2.conf"

2> Putting the modified JkMount at "001-domain-http +
010-domain-https" files.
JkMount /*.jsp
--------||-----------
The main files were at :
/usr/projects/domain/htdocs
/usr/projects/domain/htdocs/index.jsp

/usr/projects/dir/< bbb subdomain related jsp container>
/usr/projects/dir/< ccc subdomain related jsp container>
/usr/projects/dir/< ddd subdomain related jsp container>

The htp://bbb.domain.com when servs the content it dynamcally
produces a common index.jsp ( the same http://www.domain.com/index.jsp)
with few different lines icons specific for "bbb" subdomain .

The modifications has been successful .
The url "http://domain.com when put at browser
redirect to https://domain.com/index.jsp whichis normal.

But the subdomain urls "http://bbb.domain.com" are throwing
404 errors.
I didn't change the 011-subnetworks file which iam considering
All the subdomain stops working by the single jkmount change.

The error which is happening now : ( from apache error
log)

error.log :
Files does not exist 404 /usr/local/domain/aaa

access.log :

xxx.xxx.185.110 - - [22/Mar/2006:02:28:29 -0800] "GET /aaa HTTP/1.1"
404 346 "-" "Mozilla/4.0 (compatible; MSIE 6
..0; Windows NT 5.0; PCQuest)"

If you caould guess what error is happening at the expression matching
or if anything needed to
modify in the expression matching " RedirectMatch". Do you think it is
related to tomcat configs
or problems with "JkMount" ???

Thanks for your interest.
Regards..

  #6 (permalink)  
Old 03-25-2006
Robert Ionescu
 
Posts: n/a
Default Re: Apache URL Rewriting

sanjay wrote:
> <VirtualHost *>
> ServerName bbb.domain.com
> ==> RedirectMatch (.*)\.*$ https://www.domain.com/bbb$1


So there is no space between \ and the period. Aha. That is a
_complete_ different expression.

> error.log :
> Files does not exist 404 /usr/local/domain/aaa


/aaa would not match your regular expression, you must have one or n
periods at the end: /ab. would redirect to https://www.domain.com/bbb/ab
/abc...... would redirect to https://www.domain.com/bbb/abc
/abc.d would fail to match the RegEx.
To redirect jsp files only, you must use
(.+)\.jsp$
as RegEx.

--
Robert
  #7 (permalink)  
Old 03-25-2006
sanjay
 
Posts: n/a
Default Re: Apache URL Rewriting

Hi All,

Thank you Robert .
Please note :
The error lo would be ,
error.log :
Files does not exist 404 /usr/projects/domain/bbb .

Just made this typo again .

It appears with the change i made has to do something with the
expression nolonger working.

Did you mean to say the revised lines would be the following :
RedirectMatch (.+)\.jsp$ https://www.domain.com/bbb$1


so that a request to http://bbb.domain.com would
be redirected to "http://www.domain.com/bbb/index.jsp " .

  #8 (permalink)  
Old 03-25-2006
Robert Ionescu
 
Posts: n/a
Default Re: Apache URL Rewriting

sanjay wrote:
> Files does not exist 404 /usr/projects/domain/bbb


Is /usr/projects/domain the correct document root for the request,
because I can't find any DocumentRoot directive for
<VirtualHost *>
ServerName bbb.domain.com
</VirtualHost>

> Did you mean to say the revised lines would be the following :
> RedirectMatch (.+)\.jsp$ https://www.domain.com/bbb$1


To redirect only .jsp files, yes

> so that a request to http://bbb.domain.com would
> be redirected to "http://www.domain.com/bbb/index.jsp " .


To redirect directly from / to index.jsp you must use an additional
construct
RedirectMatch ^/$ https://www.domain.com/bbb/index.jsp

--
Robert

  #9 (permalink)  
Old 03-25-2006
Robert Ionescu
 
Posts: n/a
Default Re: Apache URL Rewriting

Robert Ionescu wrote:
>> Did you mean to say the revised lines would be the following :
>> RedirectMatch (.+)\.jsp$ https://www.domain.com/bbb$1

>
> To redirect only .jsp files, yes


Btw: That would not include the jsp extension.
It include it, move the right parenthesis a little bit to the right:
(.+\.jsp)$

--
Robert
  #10 (permalink)  
Old 03-26-2006
sanjay
 
Posts: n/a
Default Re: Apache URL Rewriting

Hi Robert & everybody,

Thanks you for your time.

> Is /usr/projects/domain the correct document root for the request,
> because I can't find any DocumentRoot directive for
> <VirtualHost *>
> ServerName bbb.domain.com
> </VirtualHost>

Please note that DocumentRoot directives for all the subdomains are
becoming active
by the file "099-stats " file. This file is included by "apache2.conf",
you could follow "==>" in this post to locate it, once you expand the
full post.

"# Include the virtual host configurations:
==>Include /etc/apache2/sites-enabled/[^.#]*"

Besides following all files contains DocumentRoot,
099-stats + defaults + 001domain-http + 010domain-https .
-------

regarding the correct DocumentRoot ..,
all the subdomain has the common DocumentRoot "/usr/projects/domain"

The relevant different jsp pages for each subdomain are rather kept
under
"/usr/projects/directory/jsp " . This is beacause the relevant jsp
files are mapped
at the main "index.jsp" file residing at "/usr/projects/domain"
directory. The java script
at "index.jsp" picks other jsps by virtue of the url requested by
client browser. An http request of bbb.domain.com would call the jsp
file or similar "bbb" residing at "/usr/projects/directory/jsp/" ;
all the relevant subdomain jsps and containers are available there.

Naturally there is no file or directory exists like
"/usr/projects/domain/bbb " . A http request for
"http://bbb.domain.com" should
serve "/usr/projects/domain/index.jsp" with some logo and a little part
of dynamic content specified
for "bbb" subdomain.

The idea is you don't need to keep different index files for the 100s
of subdomains.

 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 09:50 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0