Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create an Alias Directory inside a Virtual Host

Tags:

I checked here, here, here, here, and here before asking this question. I guess my search skills are weak.

I am using the WampServer version 2.2e. I have a need like, I need a virtual path inside a virtual host. Let me say the two hosts that I have.

Primary Virtual Host (Localhost)

NameVirtualHost *:80  <VirtualHost *:80>     ServerName localhost     DocumentRoot "C:/Wamp/www" </VirtualHost> 

My Apps Virtual Hosts

<VirtualHost *:80>     ServerName apps.ptrl     DocumentRoot "C:/Wamp/vhosts/ptrl/apps"     ErrorLog "logs/apps-ptrl-error.log"     CustomLog "logs/apps-ptrl-access.log" common     <Directory "C:/Wamp/vhosts/ptrl/apps">         allow from all         order allow,deny         AllowOverride All     </Directory>     DirectoryIndex index.html index.htm index.php </VirtualHost> 

My Blog Virtual Host

<VirtualHost *:80>     ServerName blog.praveen-kumar.ptrl     DocumentRoot "C:/Wamp/vhosts/ptrl/praveen-kumar/blog"     ErrorLog "logs/praveen-kumar-ptrl-error.log"     CustomLog "logs/praveen-kumar-ptrl-access.log" common     <Directory "C:/Wamp/vhosts/ptrl/praveen-kumar/blog">         allow from all         order allow,deny         AllowOverride All     </Directory>     DirectoryIndex index.html index.htm index.php </VirtualHost> 

My requirement now is to have http://apps.ptrl/blog/ and http://blog.praveen-kumar.ptrl/ should be the same directory. One thing I thought of is, moving the blog folder inside the apps folder, but it is connected with Git and other stuffs are there, so it is not possible to move the folder.

So, I thought of creating an alias to the VirtualHost in this way:

<VirtualHost *:80>     ServerName apps.ptrl     DocumentRoot "C:/Wamp/vhosts/ptrl/apps"     ErrorLog "logs/apps-ptrl-error.log"     CustomLog "logs/apps-ptrl-access.log" common     <Directory "C:/Wamp/vhosts/ptrl/apps">         allow from all         order allow,deny         AllowOverride All     </Directory>     DirectoryIndex index.html index.htm index.php      # The alias to the blog!     Alias /blog "C:/Wamp/vhosts/ptrl/praveen-kumar/blog"     <Directory "C:/Wamp/vhosts/ptrl/praveen-kumar/blog">         allow from all         order allow,deny         AllowOverride All     </Directory> </VirtualHost> 

But when I tried to access http://apps.ptrl/blog, I am getting an Error 403 Forbidden page.

Forbidden

Am I doing the right thing? If you need to look at the access log, and error log, they are here:

# Access Log 127.0.0.1 - - [14/Oct/2012:09:53:11 +0530] "GET /blog HTTP/1.1" 403 206 127.0.0.1 - - [14/Oct/2012:09:53:11 +0530] "GET /favicon.ico HTTP/1.1" 404 209 127.0.0.1 - - [14/Oct/2012:09:53:53 +0530] "GET / HTTP/1.1" 200 6935 127.0.0.1 - - [14/Oct/2012:09:53:53 +0530] "GET /app/blog/thumb.png HTTP/1.1" 404 216 # Error Log [Sun Oct 14 09:53:11 2012] [error] [client 127.0.0.1] client denied by server configuration: C:/Wamp/vhosts/ptrl/praveen-kumar/blog [Sun Oct 14 09:53:11 2012] [error] [client 127.0.0.1] File does not exist: C:/Wamp/vhosts/ptrl/apps/favicon.ico [Sun Oct 14 09:53:53 2012] [error] [client 127.0.0.1] File does not exist: C:/Wamp/vhosts/ptrl/apps/app/blog, referer: http://apps.ptrl/ 

Waiting eagerly for some help. I am ready to provide more info, if needed.


Update #1: Changed VirtualHosts declaration according to the instructions given by felipsmartins:

<VirtualHost *:80>     ServerName apps.ptrl     DocumentRoot "C:/Wamp/vhosts/ptrl/apps"     ErrorLog "logs/apps-ptrl-error.log"     CustomLog "logs/apps-ptrl-access.log" common     # The alias to the blog!     Alias /blog "C:/Wamp/vhosts/ptrl/praveen-kumar/blog"     <Directory "C:/Wamp/vhosts/ptrl/praveen-kumar/blog">         allow from all         order allow,deny         AllowOverride All     </Directory>     <Directory "C:/Wamp/vhosts/ptrl/apps">         allow from all         order allow,deny         AllowOverride All     </Directory>     DirectoryIndex index.html index.htm index.php </VirtualHost> 

Update #2: Another Issue:

I am able to access the site. The physical links are working now. i.e., I am able to open http://apps.ptrl/blog/index.php but not http://apps.ptrl/blog/view-1.ptf, which gets translated to http://apps.ptrl/blog/index.php?page=view&id=1. Any solutions?

like image 513
Praveen Kumar Purushothaman Avatar asked Oct 14 '12 04:10

Praveen Kumar Purushothaman


People also ask

What is virtual directory in Apache?

In this article we will learn about Virtual Hosting or Virtual Directory using Apache. Introduction. Virtual hosting is a process for hosting multiple domain names on a single server. This is basically sharing the services of a single server for multiple companies or for multiple websites. Sometimes it's called Vhost.


1 Answers

Note, if you are creating an Alias to a directory outside of your DocumentRoot, you may need to explicitly permit access to target directory:

<VirtualHost *:80>     ServerName apps.ptrl     DocumentRoot "C:/Wamp/vhosts/ptrl/apps"     ErrorLog "logs/apps-ptrl-error.log"     CustomLog "logs/apps-ptrl-access.log" common      # Puts here, before Directory directive :)      Alias /blog "C:/Wamp/vhosts/ptrl/praveen-kumar/blog"      <Directory "C:/Wamp/vhosts/ptrl/apps">                 allow from all         order allow,deny         AllowOverride All     </Directory> </VirtualHost> 

Note, too, that URL-path (first Alias part) is case-sensitive even on case-insensitive file systems.

Also, check permissions from C:/Wamp/vhosts/ptrl/praveen-kumar/blog directory.

Reference

  • Apache Module mod_alias
  • Apache Virtual Host
like image 123
felipsmartins Avatar answered Sep 30 '22 12:09

felipsmartins