Permalänk
Medlem

mod_rewrite virtual-hostar

Har en apache setup med en hel bunt med vhostar. Nu behöver jag även göra dynamiska sub-vhostar på en av domänerna.

Har kikat lite på mod_rewrite, men får det inte att bete sig som jag vill.

<VirtualHost *> ServerName example.com DocumentRoot ...... ......... ......... RewriteEngine On RewriteLog /home/example.com/logs/rewrite.log RewriteLogLevel 4 RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com RewriteRule ^/(.*)$ /home/example.com/sites/%1 [NC,L] </VirtualHost>

Dock funkar inte detta. Utan om jag hoppar iväg till test.example.com så kommer detta:

Kan någon förklara varför och hur jag löser det?

Visa signatur

!ERAU QSSI DLRO WEHT

Permalänk

Hm...
Jag kör med dynamisk vhosts, vilket innebär att jag inte behöver pilla i apaches konffiler varje gång jag lägger till en domän. Jag skapar bara en ny mapp i var det nu är jag har som www-root.

Visa signatur

There is a Swedish conspiracy.
http://forum.theswedishconspiracy.com

Permalänk
Medlem

Kan man få se på den konfen?

Visa signatur

!ERAU QSSI DLRO WEHT

Permalänk

Reggade just en gratis .se-domän på binero.se. De hade www, @ och * som man fick peka om. Lättast vore väl att lägga in en * i DNS-hanteringen av din domän.

Visa signatur

Gigabyte-P35-DS4 | Intel Core 2 Quad Q6600 [3 GHz] | 2x1GB Corsair XMS-6400@800Mhz | Nvidia Geforce 460 GTX [975/2000 MHz] | Intel 320 Series 80 GB SSD | | SETI@Home Team: Sweclockers.com

Permalänk
Citat:

Ursprungligen inskrivet av Laban
Kan man få se på den konfen?

I httpd.conf laddar jag följande modul:

LoadModule vhost_alias_module modules/mod_vhost_alias.so

Och i 00_default_vhost.conf har jag följande:

<IfDefine DEFAULT_VHOST> <VirtualHost *:80> # # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/var/www/%0.0" # # This should be changed to whatever you set DocumentRoot to. # <Directory "/var/www/%0.0"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs-2.0/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Order allow,deny Allow from all </Directory> <IfModule peruser.c> # this must match a Processor ServerEnvironment apache apache # these are optional - defaults to the values specified in httpd.conf MinSpareProcessors 4 MaxProcessors 20 </IfModule> <IfModule itk.c> # The userid and groupid this VirtualHost will run as AssignUserID apache apache # Optional: A separate MaxClients for the VirtualHost, # to limit the maximum number of processes MaxClientsVHost 50 # Note that if you do not assign a user ID for your # VirtualHosts, none will be assigned by default, # ie. you'll run as root. Don't forget this! </IfModule> </VirtualHost> </IfDefine>

Visa signatur

There is a Swedish conspiracy.
http://forum.theswedishconspiracy.com

Permalänk
Medlem

Man ska dock komma ihåg att om man använder php med apache så kan man via php gå ut ur sin egna directory och gå in i andras eftersom att scripten körs som samma användare.
Finns dock suexec som ska ändra användare innan scriptet körs men det går bara att anropa via userdir, dvs om man går in via example.com/~user. Det var längesedan jag höll på med detta och kan ha blandat ihop namnen lite. Har inte orkat googla någon lösning på det, men det måste finnas.

Jag körde förut med mod_vhost_alias och det funkade bra, man skapade då bara en subdoman.doman.com i /var/www/. Problemet visade sig när användare använde sig av sk "directory transversal" och kikade i varandras och även i mina sidor efter config-filer och liknande. Som tur var hade jag bara grymma användare som drog iväg ett mail ist för att förstöra men det är nog inte alla som har den turen.

Visa signatur

"With a rubberduck one's never alone"

Permalänk
Medlem

Det borde man väl lösa med detta?

php_admin_value open_basedir /usr/share/php/:/var/www/%0.0

Visa signatur

!ERAU QSSI DLRO WEHT

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Laban
Det borde man väl lösa med detta?

php_admin_value open_basedir /usr/share/php/:/var/www/%0.0

Nu kommer jag inte ihåg riktigt men har för mig att man inte fick sätta %0.0 utan att det måste vara en direkt genväg, typ /var/www/subdoman.example.com men det kan mycket väl stämma att det bara var det där som fattades.

Visa signatur

"With a rubberduck one's never alone"

Permalänk
Hedersmedlem

Snabbhackad variant som fungerar om man har mod_perl installerat (fixar dessvärre inte problemet med rättigheter), bara för att det går ;):

<IfModule mod_perl.c> <Perl> $Apache::Server::StrictPerlSections = 1; my $hostname = 'domain.tld'; foreach (glob('/var/www/users/*/')) { m#.*/([^/]+)/$#; my $insert = { ServerName => qq("$1.$hostname"), ServerAdmin => qq("$1\@$hostname"), DocumentRoot => qq("$&") }; push(@{$VirtualHost{'*:80'}}, $insert); if (Apache->module('mod_ssl.c') && Apache->define('SSL')) { $insert->SSLEngine = 'On'; push(@{$VirtualHost{'*:443'}}, $insert); } } </Perl> </IfModule>

Kräver dock att Apache startas om när man lägger till en ny vhost och kan finslipas en hel del (vet inte om det där rullar, skrev det just), men någon kanske har nytta av den.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.