Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the .htaccess elements REQUEST_FILENAME and THE_REQUEST?

Tags:

.htaccess

What is returned by %{REQUEST_FILENAME} and %{THE_REQUEST}?

I was just checking over our .htaccess file and it dawned on me, I have very little knowledge of this. The code below uses both. It works I just want understand it.

#remove / at the end of URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/$ /$1 [L,R=301]

#remove /index.php at the end of URL
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L] 

Cheers, Mark

like image 348
Mark Avatar asked Jun 20 '13 10:06

Mark


1 Answers

Thanks to Ahmed for the link.
As a quick point of reference to anyone too lazy to click on it here's the bit I was after...

THE_REQUEST The full HTTP request line sent by the browser to the server (e.g., "GET /index.html HTTP/1.1"). This does not include any additional headers sent by the browser. This value has not been unescaped (decoded), unlike most other variables below.

REQUEST_URI The path component of the requested URI, such as "/index.html". This notably excludes the query string which is available as as its own variable named QUERY_STRING.

REQUEST_FILENAME The full local filesystem path to the file or script matching the request, if this has already been determined by the server at the time REQUEST_FILENAME is referenced. Otherwise, such as when used in virtual host context, the same value as REQUEST_URI. Depending on the value of AcceptPathInfo, the server may have only used some leading components of the REQUEST_URI to map the request to a file.

like image 135
Mark Avatar answered Oct 03 '22 00:10

Mark