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 ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
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... |
|
|||
|
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 |
|
|||
|
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 |
|
|||
|
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 |
|
|||
|
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.. |
|
|||
|
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 |
|
|||
|
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 " . |
|
|||
|
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 |
|
|||
|
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 |
|
|||
|
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. |