1
|
RewriteEngine on
|
2
|
RewriteOptions AllowNoSlash InheritBefore
|
3
|
|
4
|
SetEnvIf Request_URI ^ innermost_dir=phpPgAdmin
|
5
|
|
6
|
# remove trailing / (not used)
|
7
|
RewriteRule ^(.*)/$ $1 [discardpath,noescape,qsappend]
|
8
|
|
9
|
# extract base URL
|
10
|
RewriteRule ^\[(.*)\](?:/(.*))?$ $2 [discardpath,noescape,qsappend,env=base_url:http://$1]
|
11
|
|
12
|
# extract path components 1st->last
|
13
|
#
|
14
|
# phpPgAdmin bug causes page to be ignored when not logged in. this is partially
|
15
|
# fixed by also specifying subject, which is not ignored. (however, when it
|
16
|
# falls back to using subject, it will go to the last selected tab, not the
|
17
|
# default, leftmost tab.)
|
18
|
#
|
19
|
# subject values @ /usr/share/phppgadmin/classes/Misc.php#getSubjectParams()
|
20
|
RewriteRule ^ - [discardpath,noescape,qsappend,env=subject:root,env=page:servers]
|
21
|
RewriteRule ^([^/]+)(?:/(.*))?$ $2?server=$1 [discardpath,noescape,qsappend,env=subject:server,env=page:all_db]
|
22
|
RewriteRule ^([^/]+)(?:/(.*))?$ $2?database=$1 [discardpath,noescape,qsappend,env=subject:database,env=page:schemas]
|
23
|
RewriteRule ^([^/]+)(?:/(.*))?$ $2?schema=$1 [discardpath,noescape,qsappend,env=subject:schema,env=page:tables,chain]
|
24
|
RewriteRule ^:(.*)()$ $2 [discardpath,noescape,qsappend,env=page:$1]
|
25
|
RewriteRule ^view=([^/]+)(?:/(.*))?$ $2?view=$1 [discardpath,noescape,qsappend,env=subject:view,env=page:viewproperties,env=action:columns,chain]
|
26
|
RewriteRule ^:(.*)()$ $2 [discardpath,noescape,qsappend,env=action:$1]
|
27
|
RewriteRule ^fn.oid=([^/]+)(?:/(.*))?$ $2?function_oid=$1 [discardpath,noescape,qsappend,env=subject:function,env=page:functions,env=action:properties]
|
28
|
RewriteRule ^([^/]+)(?:/(.*))?$ $2?table=$1 [discardpath,noescape,qsappend,env=subject:table,env=page:tblproperties,chain]
|
29
|
RewriteRule ^:(.*)()$ $2 [discardpath,noescape,qsappend,env=page:$1]
|
30
|
RewriteRule ^([^/]+)(?:/(.*))?$ $2?column=$1 [discardpath,noescape,qsappend,env=subject:column,env=page:colproperties]
|
31
|
|
32
|
# custom pages
|
33
|
# must be in query string b/c .php filename would be treated as path element
|
34
|
RewriteCond %{QUERY_STRING} ^(?:.*&)?page=([^&]*)
|
35
|
RewriteRule ^ - [discardpath,noescape,qsappend,env=!subject,env=page:%1]
|
36
|
|
37
|
# redirect to now-constructed URL
|
38
|
# only append subject if non-empty, to avoid confusing redirect.php
|
39
|
RewriteCond %{ENV:base_url} !=""
|
40
|
RewriteCond %{ENV:subject} ="" [ornext]
|
41
|
RewriteCond ?subject=%{ENV:subject} ^(.*)$
|
42
|
RewriteRule ^$ %{ENV:base_url}/%{ENV:page}.php%1 [chain,discardpath,noescape,qsappend,redirect]
|
43
|
# append action
|
44
|
RewriteCond %{ENV:action} ="" [ornext]
|
45
|
RewriteCond ?action=%{ENV:action} ^(.*)$
|
46
|
RewriteRule ^.*$ $0%1 [discardpath,noescape,qsappend,redirect]
|
47
|
|
48
|
## for internal URLs
|
49
|
|
50
|
# auto-add trailing / (dir without trailing / is absolute filesystem path)
|
51
|
RewriteCond %{ENV:innermost_dir} =phpPgAdmin
|
52
|
RewriteRule ^/ %{REQUEST_URI}/ [discardpath,last,noescape,qsappend,redirect]
|