Redirect from server root directory to apache root directory

859 views Asked by At

I have made simple http server on Ubuntu 14.04 with LAMP and put my html, php and js files to apache root directory /var/www/. All paths within these files are absolute and looks like /script1.php or /subdir/script.php. Directory tree of web server looks like:

/
|---var
    |---www
        |---script1.php
        |---subdir
|---usr
|---home
|---etc 

File /etc/apache2/sites-available/000-default.conf:

   ServerAdmin webmaster@localhost
   DocumentRoot /var/www

    <Directory />
            Options Indexes FollowSymLinks
            AllowOverride All
            Order Allow,Deny
            Allow from all
    </Directory>

    Alias /data /var/www/
    <Location /data>
            DAV On
            AuthType Digest
            AuthName "webdav"
            AuthUserFile /usr/local/apache2/.digest_passwd.dav
            Require valid-user
            Order Allow,Deny
            Allow from all
            DirectoryIndex disabled
    </Location>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

The problem is in the point that all paths begin from root server directory.

for example, php command opendir('/') shows list:

/
|---var
|---usr
|---home
|---etc 

but I need list like that

/
|---subdir
|---script1.php

So, how can I make Apache think that '/' means not root web server directory, but root apache directory?

1

There are 1 answers

0
John Mc Murray On

opendir takes an actual path not the path of the web server's document root. Thus, opendir("/") is working correctly to show you the server's root directory.

As mentioned by Vladimir, rather use

opendir($_SERVER["DOCUMENT_ROOT"]);

or probably better for security

opendir(filter_var($_SERVER["DOCUMENT_ROOT"], FILTER_INPUT_STRING));