web/main/SALVIAS/*/.htaccess: Added trailing / to Redirect paths, which works now that a trailing / is automatically added to all paths by dotpath translation
web/main/SALVIAS/: Moved db/ and users/ actions to their corresponding subdirs. The rules will still be run in the appropriate order, because if a .htaccess exists in a subdir, it will be used in preference to the .htaccess in the parent dir.
my2pg: Removed SETs for standard_conforming_strings, escape_string_warning because these are also prepended by my2pg.data, which this script's output is piped to
my2pg.data: \0 removal: Fixed bug where need to handle all backslashes before the 0, because they might escape just each other (an even number of \) rather than also encoding the \0 (an odd number of \)
web/main/.htaccess: translate dotpaths to /-paths: Added examples
web/main/.htaccess: translate dotpaths to /-paths: Translate all .-separated components in the path to / instead of just those that exist in the filesystem. This allows per-source rules to match just a / for the path-element separator instead of sometimes / and other times . (depending on whether that portion of the dotpath had been translated). Support [] escapes that preserve any . they surround, e.g. a.[b.c] -> a/b.c . (Supporting []-escapes requires that the /-path be "sealed" by appending a / , to prevent the . -> / translation rule from reinterpreting a newly-unescaped [] sequence as a dotpath. This also requires that the translation rule ignore anything before the last /, because it could have been []-unescaped by a previous round of mod_rewrite, e.g. in another dir. All the per-source rules need to be retrofitted to support the new trailing / .) Note also the discardpath flag (http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_dpi) on all RewriteRules that perform a replacement on the input string (i.e. that have a pattern other than ^.*$). This flag is needed to avoid infinite loops, because otherwise, a critical bug in mod_rewrite causes it to reappend the filename portion of the input string (PATH_INFO) to the result, causing it to be present twice, e.g. a/b -> a/b/b (https://issues.apache.org/bugzilla/show_bug.cgi?id=38642).
web/main/nimoy/: Moved to web/main/servers/ so it can be grouped with other resources that are servers
web/main/index.php: $root: Fixed bug where need to use gethostbyaddr($_SERVER["SERVER_ADDR"]) instead of $_SERVER["SERVER_NAME"] because SERVER_NAME is actually set to whichever hostname the server is accessed through (e.g. path.vg or vegbiendev.nceas.ucsb.edu), rather than always being set to the reverse-DNS lookup of SERVER_ADDR, as is specified in the Apache docs ("If no ServerName is specified, then the server attempts to deduce the hostname by performing a reverse lookup on the IP address" <http://httpd.apache.org/docs/2.2/mod/core.html#servername>)
web/main/.htaccess: Added back "don't rewrite existing paths" to ensure that rules after it will not rewrite any actual files (web page dependencies)
web/main/nimoy/.htaccess: Removed no longer needed trailing /
web/main/.phpMyAdmin/.htaccess: Add trailing / to provided URL in case the user didn't add it
web/main/nimoy/.htaccess: Removed unnecessary index.php from end of phpMyAdmin URL
web/main/DwC,SALVIAS,TCS,VegX: Added .htaccess redirects and dot-path-matching empty dirs, which will replace the index.php redirects with a simpler syntax (http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect)
web/main/.htaccess: translate dot-paths to dirs: Documented that this only occurs when the dirs exist in the filesystem, and that each subdir Redirect directive needs a corresponding tree of (empty) dirs
Removed no longer used web/main/_archive/index.htm. Use web/main/index.php instead, which issues the Location: header to support clients other than web browsers.
web/vegpath/: Renamed to web/main/ because the content here is the main site hosted on vegbiendev. It will eventually contain internal links to VegBIEN resources in addition to external links (persistent URLs) to sources used in creating VegBIEN.
web/vegpath/.htaccess: Removed "don't rewrite existing paths" RewriteRule because there are no longer any rules after it that require it
web/vegpath/.htaccess: translate dot-paths to dirs: translate all levels of dot-paths present in the filesystem rather than just the first level, by using the [next] RewriteRule flag (http://httpd.apache.org/docs/current/rewrite/flags.html#flag_n). This avoids the need to translate further levels of dot-paths in each subdir's .htaccess.
web/vegpath/.htaccess: translate subdomain to path: Simplified using new subdomain2path RewriteMap, which avoids the need for a separate RewriteRule+RewriteConds for each number of nested subdomains
web/vegpath.conf: subdomain2path RewriteMap: Fixed bug where need `RewriteEngine on` in the VirtualHost config for a prg: RewriteMap to take effect ("External rewriting programs are not started if they're defined in a context that does not have RewriteEngine set to on." <http://httpd.apache.org/docs/current/rewrite/rewritemap.html#prg>)
web/vegpath.conf: Added subdomain2path RewriteMap
Added web/subdomain2path for use by RewriteMap
web/vegpath.conf: Added spacing between sections and reordered directives
web/vegpath/.htaccess: translate 2-level subdomain to prefix: interpret subdomains in (standard) reverse instead of forward order (e.g. history.DwC instead of DwC.history)
web/vegpath/.htaccess: Don't also translate dash-paths to dirs (in addition to dot-paths) because this adds unnecessary complexity and was only used to allow expressing parts of subdomain paths in forward instead of reverse order (e.g. DwC-history instead of history.DwC)
web/vegpath/.htaccess: translate dot-/dash-paths to dirs: don't match / inside a . or - component, because it has a lower precedence
web/vegpath/.htaccess: translate dot-/dash-paths to dirs: changed comment to indicate that these rules can (eventually) translate any dot-/dash-path, not just the head
web/vegpath/.htaccess: translate subdomain to prefix: Use last to avoid further rewriting, since these rules make the destination a /-path
web/vegpath/.htaccess: Also translate dash-paths (e.g. DwC-history) to dirs
web/vegpath/.htaccess: translate both 1-level and 2-level subdomains to dir prefixes
web/vegpath/.htaccess: translate subdomain to prefix: HTTP_HOST RewriteCond: Don't capture part after . because it isn't used as a replacement (it used to be used for this when a now-unnecessary browser redirect was performed)
web/vegpath/.htaccess: don't rewrite existing paths: Moved before other RewriteRules so that page dependencies (such as util.js) can be loaded more quickly without needing to pass through all the rewrite rules first
web/vegpath/.htaccess: ErrorDocument: Use / instead of /index.php because index.php is the DirectoryIndex and doesn't need to be hardcoded
web/vegpath/.htaccess: translate subdomain to prefix: Fixed bug where can only run this is if the dest subdir has a .htaccess file, because this prevents the RewriteRule from being re-run for the subdir (which would lead to infinite recursion because the rule is not idempotent)
web/vegpath/.htaccess: translate subdomain to prefix: Fixed bug where need to prepend %{DOCUMENT_ROOT} to the file path when testing it for existence
web/vegpath/.htaccess: translate path head to dir (if the dir exists)
web/vegpath/.htaccess: translate subdomain to prefix: Set nosubreq to avoid infinite recursion (the RewriteRule is not idempotent)
web/vegpath/.htaccess: translate subdomain to prefix: Don't translate all nested subdomains, because some of them may result from the machine's own name (vegbiendev.nceas.ucsb.edu) and should not be removed. Instead, remove only the leftmost level of subdomain, and only if it corresponds to a filesystem directory.
web/vegpath/index.php: Use $alias whenever VegPath was reached via the machine's own name (vegbiendev.nceas.ucsb.edu) rather than via a shortened domain (path.vg), so that the right path root can seamlessly be used when path.vg is down
web/vegpath/.htaccess: Translate subdomain to path prefix
Added inputs/MO/_src/TropicosSpecimens_2013_03_12_*.txt.md5
Added inputs/MO/_archive
Added inputs/MO/_src/
web/vegpath/index.php: Brad-Boyle root: Fixed link
web/vegpath/index.php: CTFS root: Fixed link
web/vegpath/index.php: CTFS-schema: Use $Redmine_svn
web/vegpath/.htaccess: Remove www subdomain
Added web/logs/
web/vegpath/.htaccess: Use the simpler ErrorDocument directive instead of a catch-all RewriteRule to handle non-filesystem paths
web/vegpath/index.php: $alias: Use HTTP_HOST and SCRIPT_NAME so the alias doesn't need to be hardcoded
web/vegpath/util.php: Added ensure_prefix(), ensure_suffix()
web/vegpath/index.php: Switching back to path.vg now that the .vg root DNS is back online
web/vegpath/index.php: Use REQUEST_URI (removing the script's own dir) instead of PATH_INFO, to support being used for the Apache ErrorDocument directive
web/vegpath/.htaccess: mod_rewrite: Don't run any further rewrite rules if path exists, to avoid needing to add RewriteConds to each RewriteRule to check if the path exists
web/vegpath/index.php: Changed page title to contain "persistent URLs" because VegPaths are conceptually a type of PURL <http://en.wikipedia.org/wiki/PURL>
web/vegpath/index.php: $alias: Switching back to j.mp/vegpath# because the .vg root DNS server is down. (The .vg registrar adamsnames.com also displays an under construction page.) If the registrar stays down, we may want to switch a different top-level domain.
web/vegpath/.htaccess: DirectoryIndex: Removed index.htm because HTML files should not be used for redirection (they don't issue the Location: header needed by clients other than web browsers)
web/vegpath/.htaccess: mod_rewrite: Added `RewriteOptions inherit` so this .htaccess file can be copied to subdirs and will inherit the "unknown paths" rule
web/vegpath/index.php: Use $PATH_INFO (i.e. index.php/$PATH_INFO) instead of the query string to pass the path to index.php, so that the query string can be used for other things
web/vegpath/index.php: top-level path parsing: Use parse_dot_path() instead of parse_mixed_path() because XPaths are now (client-side) fragments, and don't need to be supported by the path mechanism
web/vegpath/index.php: SALVIAS: Don't append #Plot_ when there is no subpath
web/vegpath/index.php: SALVIAS: Factored out URL to $SALVIAS
web/vegpath/index.php: SALVIAS: Appended Plot_ to dest URL because both data dictionary sections start with this, so it doesn't need to be included in the VegPath
web/vegpath/index.php: XPath resources: Removed # at end of destination URL because the # is now part of the #/XPath suffix (and is added by the user)
web/vegpath/index.php: XPath resources: Added # before XPath because the XPath is actually a location within the resource, and thus resolvable by the client (or user) themselves, rather than part of the redirected URL (which only needs to forward to the XML schema file)
web/vegpath/index.php: Updated $alias to the newly-registered path.vg domain, which is shorter and more intuitive-looking than the previous value j.mp/vegpath (from bitly.com). Note that using a domain also allows redirects without JavaScript, which can be used by any web client (such as a Python script), not just a web browser.
web/vegpath/index.php: Renamed ref to ns to emphasize that the resources in this field are namespaces for the paths
web/vegpath/index.php: add_ref(): Renamed $suffix to $path_pat to distinguish it from the actual suffix string sent in the URL
web/vegpath/index.php: custom_separator(): Marked optional params as such
web/vegpath/index.php: Terms: IH-db: Factored out phpMyAdmin URL into $IH_db
web/vegpath/index.php: Terms: Added IH-db
web/vegpath/index.php: php*Admin(): Added support for a fixed table that doesn't need to be specified in the path
web/: Removed svn:executable permissions from non-executable files
web/vegpath/index.php: Data: Added Institutions subsection
web/vegpath/index.php: Placed Terms and Data sections side-by-side in two columns so that data resources would not need to come after a long list of terms resources
web/vegpath/main.css: Added .indent
web/vegpath/index.php: People: Added Brad's VegCore ID terms spreadsheets
web/vegpath/index.php: Factored Redmine svn URLs out into $Redmine_svn
Added schemas/VegCore/Brad_Boyle/ with Brad's VegCore IDs terms spreadsheets
web/vegpath/index.php: URL fragment redirect: Removed loading indicator (blinking of resource being loaded) because for file downloads, the download will not redirect to a new page and the resource name will instead remain blinking
web/vegpath/index.php: URL fragment redirect: Fixed bug where need to use parse_mixed_path() instead of parse_dot_path() to support XPaths
web/vegpath/index.php: Terms: Added CTFS
web/vegpath/index.php: URL patterns header: Reworded comment to clarify that the elements that can be left out are in italics
web/vegpath/index.php: URL fragment redirect: Only perform fragment redirect if URL shortener requires it (as indicated by the $alias ending in #)
web/vegpath/index.php: nimoy nodes: Factored nimoy phpMyAdmin() calls out into nimoy_db() function
web/vegpath/index.php: nimoy nodes: Factored nimoy URL prefix out into $nimoy
web/vegpath/index.php: SALVIAS: Added subnodes for each SALVIAS database on nimoy
web/vegpath/index.php: VegCore: Changed suffix from .table.column to .term because VegCore terms are globally unique and don't need a table prefix
web/vegpath/index.php: BIEN2: Added subnodes for each BIEN2 database on nimoy
web/vegpath/index.php: Inlined VegBank() because it's only used once
web/vegpath/index.php: VegBank(): Use custom_separator()'s new $main_url param
web/vegpath/index.php: custom_separator(): Added $main_url param like in by_prefix(), for use when there is no path
web/vegpath/index.php: VegBank(): Use new custom_separator()
web/vegpath/index.php: Added custom_separator()
web/vegpath/index.php: Add # suffix to $alias instead of adding it in add_ref(), because not all aliases will use a # suffix
web/vegpath/util.php: Added array_non_empty(), join_non_empty()
web/vegpath/index.php: add_ref(): redirect: Don't display "Loading" as the page itself is not shown to the user when using a Location: header
web/vegpath/index.php: URL fragment redirect: Fixed bug where can't prefix the fragment with / because this won't work if VegPath is not at the top-level of the domain (and in any case is unnecessary to form a relative path)