diff --git a/htpdate.c b/htpdate.c
index aa66e9f..d0e7fbb 100644
--- a/htpdate.c
+++ b/htpdate.c
@@ -146,7 +146,7 @@ static void printlog( int is_error, char *format, ... ) {
 }
 
 
-static long getHTTPdate( char *host, char *port, char *proxy, char *proxyport, char *httpversion, int ipversion, int when ) {
+static long getHTTPdate( char *host, char *port, char *proxy, char *proxyport, char *relpath, char *httpversion, int ipversion, int when ) {
 	int					server_s;
 	int					rc;
 	struct addrinfo		hints, *res, *res0;
@@ -196,7 +196,7 @@ static long getHTTPdate( char *host, char *port, char *proxy, char *proxyport, c
 	   Connection: close, allows the server the immediately close the
 	   connection after sending the response.
 	*/
-	snprintf(buffer, BUFFERSIZE, "HEAD %s/ HTTP/1.%s\r\nHost: %s\r\nUser-Agent: htpdate/"VERSION"\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n", url, httpversion, host);
+	snprintf(buffer, BUFFERSIZE, "HEAD %s/%s HTTP/1.%s\r\nHost: %s\r\nUser-Agent: htpdate/"VERSION"\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n", url, relpath, httpversion, host);
 
 	/* Loop through the available canonical names */
 	res = res0;
@@ -433,7 +433,7 @@ static void showhelp() {
 	puts("htpdate version "VERSION"\n\
 Usage: htpdate [-046abdhlqstxD] [-i pid file] [-m minpoll] [-M maxpoll]\n\
          [-p precision] [-P <proxyserver>[:port]] [-u user[:group]]\n\
-         <host[:port]> ...\n\n\
+         [-r relative/path] <host[:port]> ...\n\n\
   -0    HTTP/1.0 request\n\
   -4    Force IPv4 name resolution only\n\
   -6    Force IPv6 name resolution only\n\
@@ -449,6 +449,7 @@ Usage: htpdate [-046abdhlqstxD] [-i pid file] [-m minpoll] [-M maxpoll]\n\
   -p    precision (ms)\n\
   -P    proxy server\n\
   -q    query only, don't make time changes (default)\n\
+  -r    relative path to add the URL for the HTTP request\n\
   -s    set time\n\
   -t    turn off sanity time check\n\
   -u    run daemon as user\n\
@@ -530,6 +531,7 @@ static void runasdaemon( char *pidfile ) {
 int main( int argc, char *argv[] ) {
 	char				*host = NULL, *proxy = NULL, *proxyport = NULL;
 	char				*port;
+	char				*relpath = "";
 	char				*httpversion = DEFAULT_HTTP_VERSION;
 	char				*pidfile = DEFAULT_PID_FILE;
 	char				*user = NULL, *userstr = NULL, *group = NULL;
@@ -557,7 +559,7 @@ int main( int argc, char *argv[] ) {
 
 
 	/* Parse the command line switches and arguments */
-	while ( (param = getopt(argc, argv, "046abdhi:lm:p:qstu:wxDM:P:") ) != -1)
+	while ( (param = getopt(argc, argv, "046abdhi:lm:p:qr:stu:wxDM:P:") ) != -1)
 	switch( param ) {
 
 		case '0':			/* HTTP/1.0 */
@@ -604,6 +606,9 @@ int main( int argc, char *argv[] ) {
 			break;
 		case 'q':			/* query only */
 			break;
+		case 'r':			/* relative path for the URL */
+			relpath = (char *)optarg;
+			break;
 		case 's':			/* set time */
 			setmode = 2;
 			break;
@@ -744,7 +749,7 @@ int main( int argc, char *argv[] ) {
 				if ( debug ) printlog( 0, "burst: %d try: %d when: %d", \
 					burst + 1, MAX_ATTEMPT - try + 1, when );
 				timestamp = getHTTPdate( host, port, proxy, proxyport,\
-						httpversion, ipversion, when );
+						relpath, httpversion, ipversion, when );
 				try--;
 			} while ( timestamp && try );
 
