jonathancross/pics.jonathancross.com/master/.htaccess - Htaccess File

jonathancross/pics.jonathancross.com/master/.htaccess

AddDefaultCharset utf-8
DefaultLanguage en-US
AddType application/xhtml+xml .xhtml
# AddType text/xml .xhtml

DirectoryIndex index.shtml index.xhtml index.html index.cgi

# Secure htaccess file
<Files .htaccess>
 order allow,deny
 deny from all
</Files>

# Protect against DOS attacks by limiting file upload size
LimitRequestBody 10240000

# Minimize image flicker in IE6
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/png A2592000

# Custom error pages
ErrorDocument 404 /error.html
ErrorDocument 500 /error.html

# Clean URLs
# TODO: I think RewriteRule never contains query string, so [^?]+ could be just .+.
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /

  # Skip all rules if normal file request.
  # We need this first condition to exclude urls with a non-empty query string.
  RewriteCond %{QUERY_STRING} !.
  RewriteCond %{REQUEST_FILENAME} -f
  RewriteRule . - [last]

  # Force 301 on legacy params.
  # Consider just marking as gone:
  # RewriteRule ^jcdsee.cgi - [gone,last]
  # Redirect `pic` to single:
  RewriteCond %{QUERY_STRING} pic=([^&]+)
  RewriteRule ^jcdsee.cgi /single%1? [redirect=301,last]
  # Redirect `cur_url` to folder:
  RewriteCond %{QUERY_STRING} cur_url=([^&]+)
  RewriteRule ^jcdsee.cgi %1? [redirect=301,last]

  # Short 'go' URL redirect.  See #29.
  RewriteRule ^go/(.+)$ /jcdsee.cgi?go=$1 [last]

  # DIRECTORY: Normalize directories to have trailing slash: /
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ([^/])$ /$1/
  # DIRECTORY: Captures any real directory paths under /pics/ and converts to parameters.
  RewriteRule ^(pics[^?]*)/$ /jcdsee.cgi?pic_path=/$1/ [qsappend,last]

  # Force trailing slash if there is no '.' in the final segment (meaning it ignores file names).
  # This works most of the time, but will not catch directories with a '.' in the name.
  # Would be better to use some RewriteBase magic to test for dir or file like above.
  RewriteRule (.*/[^?.]+[^?/])$ /$1/ [redirect=301,last]

  # Display modes
  RewriteRule ^(single|thumb|slide|list)/([^?]+)$ /jcdsee.cgi?pic_path=/$2&display_mode=$1 [qsappend,last]

  # /jcdsee/ DIRECTORY: Prevent file listing here.
  RewriteRule ^jcdsee/$ / [redirect=301,last]

</IfModule>

On Github License

Files

Download PDF of Htaccess file
QUERY_STRING, REQUEST_FILENAME

Comments

Apache