Skip to content

Instantly share code, notes, and snippets.

@tsertkov
Created September 9, 2013 16:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tsertkov/6497796 to your computer and use it in GitHub Desktop.
Save tsertkov/6497796 to your computer and use it in GitHub Desktop.
Print mod_rewrite server variables using special mod_rewrite rules exporting internal variables via environment variables and PHP script printing there vars.
RewriteEngine On
# special mod_rewrite variables
RewriteRule .* - [E=MR_SPECIALS_API_VERSION:%{API_VERSION},NE]
RewriteRule .* - [E=MR_SPECIALS_THE_REQUEST:%{THE_REQUEST},NE]
RewriteRule .* - [E=MR_SPECIALS_REQUEST_URI:%{REQUEST_URI},NE]
RewriteRule .* - [E=MR_SPECIALS_REQUEST_FILENAME:%{REQUEST_FILENAME},NE]
RewriteRule .* - [E=MR_SPECIALS_IS_SUBREQ:%{IS_SUBREQ},NE]
RewriteRule .* - [E=MR_SPECIALS_HTTPS:%{HTTPS},NE]
# http headers
RewriteRule .* - [E=MR_HEADERS_HTTP_USER_AGENT:%{HTTP_USER_AGENT},NE]
RewriteRule .* - [E=MR_HEADERS_HTTP_REFERER:%{HTTP_REFERER},NE]
RewriteRule .* - [E=MR_HEADERS_HTTP_COOKIE:%{HTTP_COOKIE},NE]
RewriteRule .* - [E=MR_HEADERS_HTTP_FORWARDED:%{HTTP_FORWARDED},NE]
RewriteRule .* - [E=MR_HEADERS_HTTP_HOST:%{HTTP_HOST},NE]
RewriteRule .* - [E=MR_HEADERS_HTTP_PROXY_CONNECTION:%{HTTP_PROXY_CONNECTION},NE]
RewriteRule .* - [E=MR_HEADERS_HTTP_ACCEPT:%{HTTP_ACCEPT},NE]
# connection & request
RewriteRule .* - [E=MR_REQUEST_REMOTE_ADDR:%{REMOTE_ADDR},NE]
RewriteRule .* - [E=MR_REQUEST_REMOTE_HOST:%{REMOTE_HOST},NE]
RewriteRule .* - [E=MR_REQUEST_REMOTE_PORT:%{REMOTE_PORT},NE]
RewriteRule .* - [E=MR_REQUEST_REMOTE_USER:%{REMOTE_USER},NE]
RewriteRule .* - [E=MR_REQUEST_REMOTE_IDENT:%{REMOTE_IDENT},NE]
RewriteRule .* - [E=MR_REQUEST_REQUEST_METHOD:%{REQUEST_METHOD},NE]
RewriteRule .* - [E=MR_REQUEST_SCRIPT_FILENAME:%{SCRIPT_FILENAME},NE]
RewriteRule .* - [E=MR_REQUEST_PATH_INFO:%{PATH_INFO},NE]
RewriteRule .* - [E=MR_REQUEST_QUERY_STRING:%{QUERY_STRING},NE]
RewriteRule .* - [E=MR_REQUEST_AUTH_TYPE:%{AUTH_TYPE},NE]
# server internals
RewriteRule .* - [E=MR_SERVER_DOCUMENT_ROOT:%{DOCUMENT_ROOT},NE]
RewriteRule .* - [E=MR_SERVER_SERVER_ADMIN:%{SERVER_ADMIN},NE]
RewriteRule .* - [E=MR_SERVER_SERVER_NAME:%{SERVER_NAME},NE]
RewriteRule .* - [E=MR_SERVER_SERVER_ADDR:%{SERVER_ADDR},NE]
RewriteRule .* - [E=MR_SERVER_SERVER_PORT:%{SERVER_PORT},NE]
RewriteRule .* - [E=MR_SERVER_SERVER_PROTOCOL:%{SERVER_PROTOCOL},NE]
RewriteRule .* - [E=MR_SERVER_SERVER_SOFTWARE:%{SERVER_SOFTWARE},NE]
# system stuff
RewriteRule .* - [E=MR_SYSTEM_TIME_YEAR:%{TIME_YEAR},NE]
RewriteRule .* - [E=MR_SYSTEM_TIME_MON:%{TIME_MON},NE]
RewriteRule .* - [E=MR_SYSTEM_TIME_DAY:%{TIME_DAY},NE]
RewriteRule .* - [E=MR_SYSTEM_TIME_HOUR:%{TIME_HOUR},NE]
RewriteRule .* - [E=MR_SYSTEM_TIME_MIN:%{TIME_MIN},NE]
RewriteRule .* - [E=MR_SYSTEM_TIME_SEC:%{TIME_SEC},NE]
RewriteRule .* - [E=MR_SYSTEM_TIME_WDAY:%{TIME_WDAY},NE]
RewriteRule .* - [E=MR_SYSTEM_TIME:%{TIME},NE]
mod_rewrite specials
API_VERSION = 20051115:30
THE_REQUEST = GET /modrewrite/servervars.php HTTP/1.1
REQUEST_URI = /modrewrite/servervars.php
REQUEST_FILENAME = /Users/s6urik/Sites/localhost/docroot/modrewrite/servervars.php
IS_SUBREQ = false
HTTPS = off
HTTP headers
HTTP_USER_AGENT = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36
HTTP_REFERER = http://localhost/modrewrite/
HTTP_COOKIE = SQLiteManager_currentLangue=2
HTTP_FORWARDED =
HTTP_HOST = localhost
HTTP_PROXY_CONNECTION =
HTTP_ACCEPT = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
connection & request
REMOTE_ADDR = ::1
REMOTE_HOST = ::1
REMOTE_PORT = 64570
REMOTE_USER =
REMOTE_IDENT =
REQUEST_METHOD = GET
SCRIPT_FILENAME = /Users/s6urik/Sites/localhost/docroot/modrewrite/servervars.php
PATH_INFO =
QUERY_STRING =
AUTH_TYPE =
server internals
DOCUMENT_ROOT = /Library/WebServer/Documents
SERVER_ADMIN = you@example.com
SERVER_NAME = localhost
SERVER_ADDR = ::1
SERVER_PORT = 80
SERVER_PROTOCOL = HTTP/1.1
SERVER_SOFTWARE = Apache/2.2.22 (Unix) DAV/2 PHP/5.5.3 mod_ssl/2.2.22 OpenSSL/0.9.8x
system stuff
TIME_YEAR = 2013
TIME_MON = 09
TIME_DAY = 09
TIME_HOUR = 18
TIME_MIN = 03
TIME_SEC = 32
TIME_WDAY = 1
TIME = 20130909180332
<?php
header('Content-type: text/plain');
$types = array(
'MR_SPECIALS' => 'mod_rewrite specials',
'MR_HEADERS' => 'HTTP headers',
'MR_REQUEST' => 'connection & request',
'MR_SERVER' => 'server internals',
'MR_SYSTEM' => 'system stuff',
);
foreach ($types as $prefix => $title) {
echo "\n$title\n\n";
$length = strlen($prefix);
foreach ($_SERVER as $k => $v) {
if (!strncmp($prefix, $k, $length)) {
$name = substr($k, $length + 1);
echo "\t$name = $v\n";
unset($_SERVER[$k]);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment