virtdir.exe: Virtual Directories

The virtdir.exe utility is designed to manage virtual directories on domains. The utility allows the following:

  • creating, configuring, and removing a virtual directory
  • setting read and write access permissions for a virtual directory
  • creating a virtual directory as an IIS application and managing the application settings
  • managing virtual directory security
  • specifying which version of ASP.NET and PHP to use for a virtual directory
  • configuring ASP (for example, enabling script debugging)

Note: The functionality of virtdir.exe utility is not equal to functionality of Web Directories in Plesk GUI.

 

Location

%plesk_cli%

Usage
virtdir.exe <command> [<name>] [
<option 1> <param 1>[,<param 2>,...,<param N>]
[<option 2> <param 1>[,<param 2>,...,<param N>]]
... [<option n> <param 1>[,<param 2>,...,<param N>]]
]

 

Example

The following command creates the /vd1 virtual directory on example.com as follows: it creates the physical directory in the root directory of the virtual host, maps it to the new virtual directory; allows write access to the contents of the virtual directory (including the source code), disallows read access to these resources, allows viewing the contents of the virtual directory in a browser; disables logging visits on the virtual directory; makes the virtual directory function as a web application (from the standpoint of IIS); disallows running any scripts or executables; sets no default page to display in the browser if no particular page is specified by the user; allows public access to the virtual directory; turns off SSL/TLS support for this directory.

plesk bin virtdir.exe -c /vd1 -vhost example.com -create_phys true -access_source true -access_read false -access_write true -dir_browsing true -log_visits false -create_app false -execute_perm none -default_doc false -access_anonymous true -require_ssl false

 

Commands
Command Parameter Description Example

--create or -c

<name>

Creates a virtual directory with a specified name relative to the domain root directory.

To create the /vd1 virtual directory on example.com:

plesk bin virtdir.exe --create /vd1 -vhost example.com

or

plesk bin virtdir.exe -c /vd1 -vhost example.com

--update or -u

<name>

Updates parameters of a virtual directory.

To rename the virtual directory from /vd1 to /new_vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -name news

or

plesk bin virtdir.exe -u /vd1 -vhost example.com -name news

--remove or -r

<name>

Removes a virtual directory.

To remove the virtual directory /vd1 from example.com:

plesk bin virtdir.exe --remove /vd1 -vhost example.com

or

plesk bin virtdir.exe -r /vd1 -vhost example.com

--info or -i

<name>

Retrieves information about a virtual directory.

To retrieve the info about the virtual directory /vd1 referring to example.com:

plesk bin virtdir.exe --info /vd1 -vhost example.com

or

plesk bin virtdir.exe -i /vd1 -vhost example.com

--help or -h

 

Displays help on the use of the utility.

To see the help info on the use of this utility:

plesk bin virtdir.exe --help

or

plesk bin virtdir.exe -h

 

Options
Option Parameter Description Example

-vhost

<host_name>

Specifies a name of a virtual host that owns a virtual directory.

Is required in all commands where a virtual directory is specified.

To enable SSL/TLS for the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -require_ssl true

-create_phys

true|false

Allows/Prohibits automatically creating physical directory of the same name for a new virtual directory.

Is true by default.

Is available with --create only.

To prohibit creating the physical directory of the same name for virtual directory /vd1 on example.com:

plesk bin virtdir.exe --create /vd1 -vhost example.com -create_phys false

 

To allow creating the virtual directory /vd2 within /vd1 and a physical directory of the same name on example.com:

plesk bin virtdir.exe --create /vd1/vd2 -vhost example.com -create_phys true

-name

<relative_name>

Specifies a new name when it is necessary to rename a virtual directory.

Is available with --update only.

To rename the /vd1/vd2 virtual directory to /vd1/news on example.com:

plesk bin virtdir.exe --update /vd1/vd2 -vhost example.com -name news

-path

<relative_path>

Specifies a path of a physical directory mapped by a virtual directory.

The path is specified relative to the root directory of the domain that owns this physical directory.

Is / by default.

To redirect the /vd1/vd2 virtual directory from /vd1/vd2 to / on example.com:

plesk bin virtdir.exe --update /vd1/vd2 -vhost example.com -path /

-access_source

true|false

Enables/Disables accessing source code of ASP applications (residing within a specified virtual directory and its non-virtual subfolders) with read/write permissions (if set).

Is false by default.

To enable reading scripts of ASP applications of the /vd1 virtual directory on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -access_read true -access_source true

-access_read

true|false

Enables/Disables read access permissions to files located within a specified virtual directory.

Is true by default.

To disable read access to files of the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -access_read false

-access_write

true|false

Enables/Disables write access permissions on files located within a specified virtual directory.

Is false by default.

To enable write access permissions on files of the /vd1 virtual directory on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -access_write true

-dir_browsing

true|false

Enables/Disables user to see files and nested directories of a specified virtual directory in a browser.

Is false by default.

To enable browsing the structure of the /vd1 virtual directory on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -dir_browsing true

-log_visits

true|false

Enables/Disables visits logging of a specified virtual directory in a browser.

Is true by default.

To turn of visits logging for the website (virtual directory /vd1) on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -log_visits false

-create_app

true|false

Enables/Disables creating a virtual directory as an IIS application.

Is true by default.

To disable creating the virtual directory /vd1 as an IIS application on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -create_app true -run_in_mta false

-execute_perm

none | script | script_execute

Specifies the execution permission level for files located within a specified virtual directory.

If set to none, allows the display of static files (HTML, images, etc.) only.

If set to script, allows the execution of scripts only.

If set to script_execute, allows the execution of all files, including scripts and executables.

To restrict the running of executables, but allow all other files of the virtual directory /vd1 on the domain example.com to execute:

plesk bin virtdir.exe --update /vd1 -vhost example.com -execute_perm script

-parent_paths

true|false

Enables/Disables active scripts of a specified virtual directory to use relative paths to access its parent directories (using the .. syntax).

If set to true, it is recommended that the -execute_perm option is set to none.

Is available with the -create_app option set to true only.

To enable access to parent directories of the virtual directory /vd1 on example.com by a relative path:

plesk bin virtdir.exe --update /vd1 -vhost example.com -execute_perm none -parent_paths true

-run_in_mta

true|false

Enables/Disables running the IIS application (located in a specified virtual directory) in the multithreaded apartment (MTA).

Is available with the -create_app option set to true only.

To set the IIS application stored in the virtual directory /vd1 on example.com to be executed in a dedicated process (STA):

plesk bin virtdir.exe --update /vd1 -vhost example.com -create_app true -run_in_mta false

-default_doc

true|false

Enables/Disables displaying a default page when a user enters a specified virtual directory with no particular file name specified.

If it is set to false, no default page is used and two cases are possible:

- if the -dir_browsing option is true, a list of all files and nested directories in FTP style is displayed;

- if -dir_browsing option is false, the Access forbidden message is displayed.

To disable displaying a default file and listing the contents for the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -dir_browsing true -default_doc false

-default_doc_order

<doc 1>,<doc 2>,…,<doc N>

Specifies the prioritized list of default pages for IIS to search within the virtual directory.

The first match is displayed. If no match is found, displayed is the list of all files and nested folders in FTP style.

The option is available with the -default_doc option enabled.

To specify the default pages list for the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -default_doc true -default_doc_order index.html,page1.html

-access_anonymous

true|false

Enables/Disables public access to the virtual directory.

If true, the user can access the directory without authentication.

To restrict access to the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -access_anonymous false

-access_windows

true|false

Enables/Disables Windows authentication for users accessing the virtual directory.

To restrict access to the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -access_windows false

-require_ssl

true|false

Enables/Disables SSL/TLS access to the virtual directory.

If true, the virtual directory can be accessed via SSL/TLS only.

To enables SSL/TLS access to the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -require_ssl true

-php_version

4|5|5.3|5.4|5.5|5.6

Specifies the PHP version.

 

To select PHP 5.4 support for the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -php_version 5.4

-asp.net_version

1.1|2.0|4.0

Specifies the ASP.NET version.

Is available with -create_app option enabled and ASP.NET supported on the domain.

To select ASP.NET version 4.0 for web applications located in the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -create_app true -asp.net_version 4.0

-mime-types

"<type1> <extension1>; ... <typeN> <extensionN>"

Sets MIME types for the specified directory. For example: 'text/plain .txt image/jpeg .jpeg'.

To set custom MIME types and access by IP addresses for the website (virtual directory /vd1) on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com --mime-types "image/jpeg .jpg" -ip_deny 192.168.1.0/16 -ip_allow 192.168.1.11

 

-ip_deny

"<IP address 1> <IP address 2> ... <IP address N>"

Sets a list of IP addresses that will be denied access to the specified website. Use spaces to separate IP addresses. For example: '10.1.0.0/16 192.168.1.110'.

-ip_allow

"<IP address 1> <IP address 2> ... <IP address N>"

Sets a list of IP addresses that will be allowed to access the specified website. Use spaces to separate IP addresses. For example: '192.168.0.0/16 10.1.1.21'.

-aspBufferingLimit

<KB>

Limits the size of ASP buffer assigned to a specified virtual directory.

 

To restrict the maximum size of the ASP buffer available for virtual directory /vd1 on example.com to 1 MB:

plesk bin virtdir.exe --update /vd1 -vhost example.com -aspBufferingLimit 1024

-aspMaxRequestEntityAllowed

<KB>

Limits the size of ASP request entity body.

 

To restrict the maximum size of ASP request entity body available for the virtual directory /vd1 on example.com to 3 MB:

plesk bin virtdir.exe --update /vd1 -vhost example.com -aspMaxRequestEntityAllowed 3072

-aspEnableServerDebug

<true|false>

Enables/Disables ASP server-side script debugging.

If it is a root directory, default value is defined by IIS; else inherited by parent directory.

 

To enable server-side script debugging for the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -aspEnableServerDebug true

-aspEnableClientDebug

true|false

Enables/Disables ASP client-side script debugging.

If it is a root directory, default value is defined by IIS; else inherited by parent directory.

To enable client-side script debugging for the virtual directory /vd1 on example.com:

plesk bin virtdir.exe --update /vd1 -vhost example.com -aspEnableClientDebug true

-is_deny_by_concurrent_requests

true|false

Sets dynamic denying of IP addresses based on the number of concurrent HTTP requests. Applies to the root virtual directory.

This restriction can be used together with the restriction based on the number of HTTP requests over a period of time.

Learn more at http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-dynamic-ip-address-restrictions

To make IIS deny access to the site example.com from clients that have made more than 9 concurrent HTTP requests:

plesk bin virtdir.exe --update / -vhost example.com -is_deny_by_concurrent_requests true -max_concurrent_requests 9

 

-max_concurrent_requests

<number>

Sets the maximum number of concurrent requests. Is 5 by default.

Is used with the -ip_deny_by_concurrent_requests option.

-is_deny_by_request_rate

true|false

Sets dynamic denying of IP addresses based on the number of requests over a period of time. Applies to the root virtual directory.

Learn more at http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-dynamic-ip-address-restrictions

To make IIS deny access to the site example.com from clients that have made more than 22 HTTP requests in 230 milliseconds:

plesk bin virtdir.exe --update / -vhost example.com -is_deny_by_request_rate true -max_requests 22 -request_interval 230

-max_requests

<number>

Sets the maximum number of requests. Is 20 by default.

Is used with the -ip_deny_by_request_rate option.

-request_interval

<number>

Sets a time period (in milliseconds). Is 200 by default.

Is used with the -ip_deny_by_request_rate option.

 

 

 

Leave your feedback on this topic here

If you have questions or need support, please visit the Plesk forum or contact your hosting provider.
The comments below are for feedback on the documentation only. No timely answers or help will be provided.