Mastering IIS FTP - Part 2 - Virtual Directories/Physical Directories
Scott Forsyth
March 15, 2004
In
Part 1 we covered ways to use the hidden power of Microsoft's FTP
server product. We talked about ways to leverage virtual directories along with
Windows user accounts.
Today I want to take this one step further and discuss how to work with the IIS
FTP quirks with using virtual directories as . . . yes, virtual directories. Because
Microsoft has t his unique way to utilizing virtual directories to offer more control,
it also means that simply using virtual directories for their original purpose isn't
as obvious as it should be.
Rule #3: A Virtual Directory created in IIS FTP isn't seen by a FTP program
If we want to create a virtual folder that points to a different location on a server,
one of the first things we will notice is that if we create the virtual directory
in IIS FTP and then use a FTP client to log in, we won't see the folder!! We can
use ChgDir if our FTP client supports it and type in the name of the vdir but that's
often times not good enough. We want to actually see it.
Let me explain it further. Consider the following folder structure where d:\domains\mysite\
is the FTP root path:
d:\domains\mysite\
d:\domains\mysite\images\
d:\domains\mysite\bin\
d:\domains\mysite\admin\
Now, let's create a virtual directory in IIS FTP called downloads which will point
to:
e:\downloads\
When we log into our FTP account, we will see images, bin and admin
but we won't see downloads.
Why is that? Since virtual directories aren't always used for their original
purpose, as we saw in Part 1, they don't automatically appear. The other reason
is that FTP programs will scan the files and folders on disk to determine what to
display. Since virtual directories don't reside at the folder level, they won't
be shown with the rest of the folders.
So what do we do? Fortunately the solution is simple.
Tip #2: Create an empty “physical” directory to have a “virtual” directory
appear in a FTP program
Since the FTP client program will check for files and folders on disk, simply create
an empty folder on disk where the virtual directory should show up. In my example
above, it means creating an empty folder called d:\domains\mysite\downloads\. Now,
after you log into this FTP account with your FTP program, you will see images, bin,
admin and downloads. If you double click on downloads you will be
taken to e:\downloads because the virtual directory in IIS FTP will take precedence.
Rule #4: If both a Virtual Directory and Physical Directory exist, the Virtual
Directory takes precedence
In my example above, I've created a “virtual“ folder which redirects to another
location on the server, and a “physical“ folder so that it will show up in my FTP
program. Even if I put files in the empty downloads folder, I won't be able to access
them by double clicking on the downloads folder. Instead of being directed to d:\domains\mysite\downloads\
(physical folder) I will be directed to e:\downloads\ (virtual folder).
In summary, when creating a virtual directory that should show up in the FTP client
program, make sure to create an empty physical directory to match.
In
Part 1 we covered working with Virtual Directories and Windows Users.
In this Part we covered working with Virtual Directories and Physical Directories.
In Part 3 and Part 4 we will cover IIS6 User isolation (and why I don't use it)
and some tricks for more advanced configurations.
Scott Forsyth is Director of IT at
ORCS Web, Inc.
- a company that provides managed hosting solutions for clients who develop and deploy their applications on Microsoft Windows platforms. Services include shared hosting, dedicated hosting, and webfarm hosting, with specialty in .Net, SQL Server, and architecting highly scalable solutions.