⌈⌋ branch:  freshcode


Hex Artifact Content

Artifact 939aabdd7c2e447d51d2cb8224a6e7e57fe15346:

  • File .htaccess — part of check-in [baa05022e2] at 2015-04-20 22:56:14 on branch trunk — Broke up main RewriteRule for readability and constraining subpage input. (user: mario size: 2949)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 55 54 46 2d  # encoding: UTF-
0010: 38 0a 23 20 61 70 69 3a 20 61 70 61 63 68 65 0a  8.# api: apache.
0020: 23 20 74 69 74 6c 65 3a 20 52 65 77 72 69 74 65  # title: Rewrite
0030: 52 75 6c 65 73 0a 23 20 64 65 73 63 72 69 70 74  Rules.# descript
0040: 69 6f 6e 3a 20 4d 61 70 20 70 61 74 68 73 20 6f  ion: Map paths o
0050: 6e 74 6f 20 64 69 73 70 61 74 63 68 65 72 20 73  nto dispatcher s
0060: 63 72 69 70 74 0a 23 20 76 65 72 73 69 6f 6e 3a  cript.# version:
0070: 20 31 2e 30 0a 23 20 64 65 70 65 6e 64 73 3a 20   1.0.# depends: 
0080: 6d 6f 64 5f 72 65 77 72 69 74 65 0a 0a 0a 4f 70  mod_rewrite...Op
0090: 74 69 6f 6e 73 20 2d 4d 75 6c 74 69 56 69 65 77  tions -MultiView
00a0: 73 0a 52 65 77 72 69 74 65 45 6e 67 69 6e 65 20  s.RewriteEngine 
00b0: 4f 6e 0a 0a 23 2d 2d 20 53 69 6d 75 6c 61 74 65  On..#-- Simulate
00c0: 20 5b 45 4e 44 5d 20 66 6c 61 67 0a 52 65 77 72   [END] flag.Rewr
00d0: 69 74 65 43 6f 6e 64 20 20 25 7b 45 4e 56 3a 52  iteCond  %{ENV:R
00e0: 45 44 49 52 45 43 54 5f 53 54 41 54 55 53 7d 20  EDIRECT_STATUS} 
00f0: 20 3d 32 30 30 0a 52 65 77 72 69 74 65 52 75 6c   =200.RewriteRul
0100: 65 20 20 5e 20 20 20 20 20 20 20 20 20 20 20 20  e  ^            
0110: 20 20 20 20 20 20 2d 20 20 20 20 20 20 20 20 20        -         
0120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 4c                [L
0130: 2c 4e 53 5d 0a 0a 23 2d 2d 20 53 74 72 69 70 20  ,NS]..#-- Strip 
0140: 77 77 77 2e 20 70 72 65 66 69 78 0a 52 65 77 72  www. prefix.Rewr
0150: 69 74 65 43 6f 6e 64 20 20 25 7b 52 45 51 55 45  iteCond  %{REQUE
0160: 53 54 5f 4d 45 54 48 4f 44 7d 20 20 5e 47 45 54  ST_METHOD}  ^GET
0170: 24 0a 52 65 77 72 69 74 65 43 6f 6e 64 20 20 25  $.RewriteCond  %
0180: 7b 48 54 54 50 5f 48 4f 53 54 7d 20 20 20 20 20  {HTTP_HOST}     
0190: 20 20 5e 77 77 2b 5c 2e 28 5c 77 2b 5c 2e 5c 77    ^ww+\.(\w+\.\w
01a0: 2b 29 5c 2e 3f 24 0a 52 65 77 72 69 74 65 52 75  +)\.?$.RewriteRu
01b0: 6c 65 20 20 5e 28 2e 2a 29 24 20 20 20 20 20 20  le  ^(.*)$      
01c0: 20 20 20 20 20 20 20 68 74 74 70 3a 2f 2f 25 31         http://%1
01d0: 2f 24 31 20 20 20 20 20 20 20 20 20 20 20 20 5b  /$1            [
01e0: 52 3d 33 30 31 2c 51 53 41 2c 4c 5d 0a 23 2d 2d  R=301,QSA,L].#--
01f0: 20 43 6f 6e 73 6f 6c 69 64 61 74 65 20 74 6f 20   Consolidate to 
0200: 6a 75 73 74 20 66 72 65 73 68 63 6f 64 65 2e 63  just freshcode.c
0210: 6c 75 62 20 66 6f 72 20 6e 6f 77 0a 52 65 77 72  lub for now.Rewr
0220: 69 74 65 43 6f 6e 64 20 20 25 7b 52 45 51 55 45  iteCond  %{REQUE
0230: 53 54 5f 4d 45 54 48 4f 44 7d 20 20 5e 47 45 54  ST_METHOD}  ^GET
0240: 24 0a 52 65 77 72 69 74 65 43 6f 6e 64 20 20 25  $.RewriteCond  %
0250: 7b 48 54 54 50 5f 48 4f 53 54 7d 20 20 20 20 20  {HTTP_HOST}     
0260: 20 20 5e 28 66 72 65 73 68 6d 65 61 74 7c 66 72    ^(freshmeat|fr
0270: 65 65 63 6f 64 65 29 5c 2e 63 6c 75 62 24 0a 52  eecode)\.club$.R
0280: 65 77 72 69 74 65 52 75 6c 65 20 20 5e 28 2e 2a  ewriteRule  ^(.*
0290: 29 24 20 20 20 20 20 20 20 20 20 20 20 20 20 68  )$             h
02a0: 74 74 70 3a 2f 2f 66 72 65 73 68 63 6f 64 65 2e  ttp://freshcode.
02b0: 63 6c 75 62 2f 24 31 20 20 20 5b 52 3d 33 30 31  club/$1   [R=301
02c0: 2c 51 53 41 2c 4c 5d 0a 0a 23 2d 2d 20 52 53 53  ,QSA,L]..#-- RSS
02d0: 2f 41 74 6f 6d 20 61 6c 69 61 73 65 73 0a 52 65  /Atom aliases.Re
02e0: 77 72 69 74 65 43 6f 6e 64 20 20 25 7b 51 55 45  writeCond  %{QUE
02f0: 52 59 5f 53 54 52 49 4e 47 7d 20 20 20 20 5e 66  RY_STRING}    ^f
0300: 6f 72 6d 61 74 3d 28 61 74 6f 6d 7c 72 73 73 7c  ormat=(atom|rss|
0310: 6a 73 6f 6e 29 24 0a 52 65 77 72 69 74 65 52 75  json)$.RewriteRu
0320: 6c 65 20 20 5e 24 20 66 65 65 64 2f 78 66 65 72  le  ^$ feed/xfer
0330: 2e 25 31 0a 52 65 77 72 69 74 65 52 75 6c 65 20  .%1.RewriteRule 
0340: 20 5e 28 3f 3a 70 72 6f 6a 65 63 74 73 29 5c 2e   ^(?:projects)\.
0350: 28 61 74 6f 6d 7c 72 73 73 7c 6a 73 6f 6e 29 24  (atom|rss|json)$
0360: 20 20 66 65 65 64 2f 78 66 65 72 2e 24 31 0a 0a    feed/xfer.$1..
0370: 23 2d 2d 20 46 72 65 65 63 6f 64 65 20 41 50 49  #-- Freecode API
0380: 20 6d 61 70 70 69 6e 67 0a 52 65 77 72 69 74 65   mapping.Rewrite
0390: 43 6f 6e 64 20 20 25 7b 52 45 51 55 45 53 54 5f  Cond  %{REQUEST_
03a0: 4d 45 54 48 4f 44 7d 20 20 5e 47 45 54 24 0a 52  METHOD}  ^GET$.R
03b0: 65 77 72 69 74 65 52 75 6c 65 20 20 5e 70 72 6f  ewriteRule  ^pro
03c0: 6a 65 63 74 73 2f 28 5b 5c 77 2d 5f 2e 5d 2b 29  jects/([\w-_.]+)
03d0: 5c 2e 6a 73 6f 6e 24 20 20 69 6e 64 65 78 2e 70  \.json$  index.p
03e0: 68 70 3f 70 61 67 65 3d 61 70 69 26 6e 61 6d 65  hp?page=api&name
03f0: 3d 24 31 26 61 70 69 3d 71 75 65 72 79 20 5b 4c  =$1&api=query [L
0400: 2c 4e 53 2c 51 53 41 5d 0a 52 65 77 72 69 74 65  ,NS,QSA].Rewrite
0410: 43 6f 6e 64 20 20 25 7b 52 45 51 55 45 53 54 5f  Cond  %{REQUEST_
0420: 4d 45 54 48 4f 44 7d 20 20 5e 50 55 54 7c 50 4f  METHOD}  ^PUT|PO
0430: 53 54 24 0a 52 65 77 72 69 74 65 52 75 6c 65 20  ST$.RewriteRule 
0440: 20 5e 70 72 6f 6a 65 63 74 73 2f 28 5b 5c 77 2d   ^projects/([\w-
0450: 5f 2e 5d 2b 29 5c 2e 6a 73 6f 6e 24 20 20 69 6e  _.]+)\.json$  in
0460: 64 65 78 2e 70 68 70 3f 70 61 67 65 3d 61 70 69  dex.php?page=api
0470: 26 6e 61 6d 65 3d 24 31 26 61 70 69 3d 75 70 64  &name=$1&api=upd
0480: 61 74 65 5f 63 6f 72 65 20 5b 4c 2c 4e 53 2c 51  ate_core [L,NS,Q
0490: 53 41 5d 0a 52 65 77 72 69 74 65 43 6f 6e 64 20  SA].RewriteCond 
04a0: 20 25 7b 52 45 51 55 45 53 54 5f 4d 45 54 48 4f   %{REQUEST_METHO
04b0: 44 7d 20 20 5e 43 52 45 41 54 45 7c 49 4e 49 54  D}  ^CREATE|INIT
04c0: 24 0a 52 65 77 72 69 74 65 52 75 6c 65 20 20 5e  $.RewriteRule  ^
04d0: 70 72 6f 6a 65 63 74 73 2f 28 5b 5c 77 2d 5f 2e  projects/([\w-_.
04e0: 5d 2b 29 5c 2e 6a 73 6f 6e 24 20 20 69 6e 64 65  ]+)\.json$  inde
04f0: 78 2e 70 68 70 3f 70 61 67 65 3d 61 70 69 26 6e  x.php?page=api&n
0500: 61 6d 65 3d 24 31 26 61 70 69 3d 6e 65 77 5f 70  ame=$1&api=new_p
0510: 72 6f 6a 65 63 74 20 5b 4c 2c 4e 53 2c 51 53 41  roject [L,NS,QSA
0520: 5d 0a 52 65 77 72 69 74 65 43 6f 6e 64 20 20 25  ].RewriteCond  %
0530: 7b 52 45 51 55 45 53 54 5f 4d 45 54 48 4f 44 7d  {REQUEST_METHOD}
0540: 20 20 5e 50 4f 53 54 24 0a 52 65 77 72 69 74 65    ^POST$.Rewrite
0550: 52 75 6c 65 20 20 5e 70 72 6f 6a 65 63 74 73 2f  Rule  ^projects/
0560: 28 5b 5c 77 2d 5f 2e 5d 2b 29 2f 72 65 6c 65 61  ([\w-_.]+)/relea
0570: 73 65 73 5c 2e 6a 73 6f 6e 24 20 20 69 6e 64 65  ses\.json$  inde
0580: 78 2e 70 68 70 3f 70 61 67 65 3d 61 70 69 26 6e  x.php?page=api&n
0590: 61 6d 65 3d 24 31 26 61 70 69 3d 70 75 62 6c 69  ame=$1&api=publi
05a0: 73 68 20 5b 4c 2c 4e 53 2c 51 53 41 5d 0a 52 65  sh [L,NS,QSA].Re
05b0: 77 72 69 74 65 43 6f 6e 64 20 20 25 7b 52 45 51  writeCond  %{REQ
05c0: 55 45 53 54 5f 4d 45 54 48 4f 44 7d 20 20 5e 28  UEST_METHOD}  ^(
05d0: 47 45 54 7c 44 45 4c 45 54 45 29 24 0a 52 65 77  GET|DELETE)$.Rew
05e0: 72 69 74 65 52 75 6c 65 20 20 5e 70 72 6f 6a 65  riteRule  ^proje
05f0: 63 74 73 2f 28 5b 5c 77 2d 5f 2e 5d 2b 29 2f 72  cts/([\w-_.]+)/r
0600: 65 6c 65 61 73 65 73 2f 28 5c 77 2b 29 5c 2e 6a  eleases/(\w+)\.j
0610: 73 6f 6e 24 20 20 69 6e 64 65 78 2e 70 68 70 3f  son$  index.php?
0620: 70 61 67 65 3d 61 70 69 26 6e 61 6d 65 3d 24 31  page=api&name=$1
0630: 26 61 70 69 3d 76 65 72 73 69 6f 6e 5f 25 31 26  &api=version_%1&
0640: 69 64 3d 24 32 20 5b 4c 2c 4e 53 2c 51 53 41 5d  id=$2 [L,NS,QSA]
0650: 0a 52 65 77 72 69 74 65 43 6f 6e 64 20 20 25 7b  .RewriteCond  %{
0660: 52 45 51 55 45 53 54 5f 4d 45 54 48 4f 44 7d 20  REQUEST_METHOD} 
0670: 20 5e 28 47 45 54 7c 50 55 54 7c 50 4f 53 54 7c   ^(GET|PUT|POST|
0680: 50 55 53 48 29 24 0a 52 65 77 72 69 74 65 52 75  PUSH)$.RewriteRu
0690: 6c 65 20 20 5e 70 72 6f 6a 65 63 74 73 2f 28 5b  le  ^projects/([
06a0: 5c 77 2d 5f 2e 5d 2b 29 2f 75 72 6c 73 5c 2e 6a  \w-_.]+)/urls\.j
06b0: 73 6f 6e 24 20 20 69 6e 64 65 78 2e 70 68 70 3f  son$  index.php?
06c0: 70 61 67 65 3d 61 70 69 26 6e 61 6d 65 3d 24 31  page=api&name=$1
06d0: 26 61 70 69 3d 75 72 6c 73 20 5b 4c 2c 4e 53 2c  &api=urls [L,NS,
06e0: 51 53 41 5d 20 0a 0a 0a 23 2d 2d 20 54 65 6d 70  QSA] ...#-- Temp
06f0: 20 64 69 73 61 62 6c 65 0a 23 52 65 77 72 69 74   disable.#Rewrit
0700: 65 52 75 6c 65 20 20 5e 20 20 20 20 20 20 20 20  eRule  ^        
0710: 20 20 20 20 20 20 20 65 72 72 6f 72 35 30 30 2e         error500.
0720: 68 74 6d 6c 20 20 20 20 20 20 20 20 20 20 20 20  html            
0730: 20 20 20 20 20 20 20 20 20 20 20 5b 4c 5d 0a 0a             [L]..
0740: 0a 0a 23 2d 2d 20 50 61 67 65 20 64 69 73 70 61  ..#-- Page dispa
0750: 74 63 68 69 6e 67 0a 52 65 77 72 69 74 65 52 75  tching.RewriteRu
0760: 6c 65 20 20 5e 69 6e 64 65 78 2f 3f 24 09 09 09  le  ^index/?$...
0770: 09 09 09 09 2f 09 09 09 5b 52 3d 33 30 31 2c 4c  ..../...[R=301,L
0780: 5d 0a 52 65 77 72 69 74 65 52 75 6c 65 20 20 5e  ].RewriteRule  ^
0790: 24 09 09 09 09 09 09 09 09 69 6e 64 65 78 2e 70  $........index.p
07a0: 68 70 3f 70 61 67 65 3d 69 6e 64 65 78 20 20 20  hp?page=index   
07b0: 20 5b 4c 2c 4e 53 2c 51 53 41 5d 0a 52 65 77 72   [L,NS,QSA].Rewr
07c0: 69 74 65 52 75 6c 65 20 20 5e 28 70 72 6f 6a 65  iteRule  ^(proje
07d0: 63 74 73 7c 73 75 62 6d 69 74 7c 73 65 61 72 63  cts|submit|searc
07e0: 68 7c 66 6c 61 67 7c 66 65 65 64 7c 61 64 6d 69  h|flag|feed|admi
07f0: 6e 29 5c 62 2f 3f 28 5c 77 2b 28 3f 3a 5b 2d 5f  n)\b/?(\w+(?:[-_
0800: 5d 5c 77 2b 29 2a 28 3f 3a 5c 2e 5c 77 7b 31 2c  ]\w+)*(?:\.\w{1,
0810: 37 7d 29 3f 29 3f 28 3f 3a 5c 2e 28 6a 73 6f 6e  7})?)?(?:\.(json
0820: 7c 61 74 6f 6d 7c 72 73 73 29 29 3f 2f 3f 24 20  |atom|rss))?/?$ 
0830: 20 20 69 6e 64 65 78 2e 70 68 70 3f 70 61 67 65    index.php?page
0840: 3d 24 31 26 6e 61 6d 65 3d 24 32 26 65 78 74 3d  =$1&name=$2&ext=
0850: 24 33 20 20 20 5b 4c 2c 4e 53 2c 51 53 41 5d 0a  $3   [L,NS,QSA].
0860: 52 65 77 72 69 74 65 52 75 6c 65 20 20 5e 28 73  RewriteRule  ^(s
0870: 65 61 72 63 68 7c 66 6c 61 67 7c 6e 61 6d 65 73  earch|flag|names
0880: 3f 7c 74 61 67 73 3f 7c 6c 6f 67 69 6e 7c 6c 69  ?|tags?|login|li
0890: 6e 6b 73 7c 72 63 29 28 3f 3a 2f 28 5c 77 2b 29  nks|rc)(?:/(\w+)
08a0: 3f 29 3f 24 09 69 6e 64 65 78 2e 70 68 70 3f 70  ?)?$.index.php?p
08b0: 61 67 65 3d 24 31 26 6e 61 6d 65 3d 24 32 09 5b  age=$1&name=$2.[
08c0: 4c 2c 4e 53 2c 51 53 41 5d 0a 52 65 77 72 69 74  L,NS,QSA].Rewrit
08d0: 65 52 75 6c 65 20 20 5e 28 67 69 74 68 75 62 2d  eRule  ^(github-
08e0: 72 65 6c 65 61 73 65 73 7c 6c 61 75 6e 63 68 70  releases|launchp
08f0: 61 64 2d 72 65 6c 65 61 73 65 73 7c 64 72 63 68  ad-releases|drch
0900: 61 6e 67 65 6c 6f 67 29 2f 3f 24 09 69 6e 64 65  angelog)/?$.inde
0910: 78 2e 70 68 70 3f 70 61 67 65 3d 24 31 09 5b 4c  x.php?page=$1.[L
0920: 2c 4e 53 2c 51 53 41 5d 0a 52 65 77 72 69 74 65  ,NS,QSA].Rewrite
0930: 52 75 6c 65 20 20 5e 28 73 73 6c 29 2f 3f 24 09  Rule  ^(ssl)/?$.
0940: 09 09 09 09 09 09 69 6e 64 65 78 2e 70 68 70 3f  ......index.php?
0950: 70 61 67 65 3d 24 31 09 5b 4c 2c 4e 53 2c 51 53  page=$1.[L,NS,QS
0960: 41 5d 0a 52 65 77 72 69 74 65 52 75 6c 65 20 20  A].RewriteRule  
0970: 5e 28 75 72 6c 7c 67 6f 29 2f 28 5c 77 2b 28 3f  ^(url|go)/(\w+(?
0980: 3a 5b 2d 5f 2e 5d 5c 77 2b 29 2a 29 2f 28 5c 77  :[-_.]\w+)*)/(\w
0990: 2b 29 2f 3f 24 09 09 09 69 6e 64 65 78 2e 70 68  +)/?$...index.ph
09a0: 70 3f 70 61 67 65 3d 72 65 64 69 72 26 6e 61 6d  p?page=redir&nam
09b0: 65 3d 24 32 26 65 78 74 3d 24 33 09 5b 4c 2c 4e  e=$2&ext=$3.[L,N
09c0: 53 2c 51 53 41 5d 0a 52 65 77 72 69 74 65 52 75  S,QSA].RewriteRu
09d0: 6c 65 20 20 5e 28 66 6f 72 75 6d 7c 6d 65 74 61  le  ^(forum|meta
09e0: 29 5c 62 2f 3f 28 5c 77 2b 29 3f 2f 3f 24 09 09  )\b/?(\w+)?/?$..
09f0: 09 09 09 70 61 67 65 5f 66 6f 72 75 6d 2e 70 68  ...page_forum.ph
0a00: 70 3f 6e 61 6d 65 3d 24 32 09 5b 4c 2c 4e 53 2c  p?name=$2.[L,NS,
0a10: 51 53 41 5d 0a 0a 23 2d 2d 20 44 65 6e 79 20 64  QSA]..#-- Deny d
0a20: 69 72 65 63 74 20 69 6e 76 6f 63 61 74 69 6f 6e  irect invocation
0a30: 73 0a 52 65 77 72 69 74 65 52 75 6c 65 20 20 5e  s.RewriteRule  ^
0a40: 66 72 65 73 68 63 6f 64 65 5c 2e 64 62 2e 2a 24  freshcode\.db.*$
0a50: 20 20 2d 20 20 20 20 20 20 20 20 20 20 20 20 20    -             
0a60: 20 20 20 20 20 20 20 20 20 20 5b 46 5d 0a 52 65            [F].Re
0a70: 77 72 69 74 65 52 75 6c 65 20 20 5e 5c 2e 20 20  writeRule  ^\.  
0a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20                - 
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0aa0: 20 20 20 20 20 20 5b 46 5d 0a 52 65 77 72 69 74        [F].Rewrit
0ab0: 65 43 6f 6e 64 20 20 25 7b 45 4e 56 3a 52 45 44  eCond  %{ENV:RED
0ac0: 49 52 45 43 54 5f 53 54 41 54 55 53 7d 20 20 21  IRECT_STATUS}  !
0ad0: 32 30 30 0a 52 65 77 72 69 74 65 52 75 6c 65 20  200.RewriteRule 
0ae0: 20 5e 5c 77 2b 5c 2e 70 68 70 28 7c 2f 2e 2a 29   ^\w+\.php(|/.*)
0af0: 24 20 20 20 2d 20 20 20 20 20 20 20 20 20 20 20  $   -           
0b00: 20 20 20 20 20 20 20 20 20 20 20 20 5b 46 2c 4c              [F,L
0b10: 2c 4e 53 5d 0a 0a 0a 23 2d 2d 20 69 6e 76 61 6c  ,NS]...#-- inval
0b20: 69 64 20 72 65 73 6f 75 72 63 65 73 0a 52 65 77  id resources.Rew
0b30: 72 69 74 65 52 75 6c 65 20 5e 66 61 76 69 63 6f  riteRule ^favico
0b40: 6e 5c 2e 28 70 6e 67 7c 69 63 6f 7c 6a 70 65 67  n\.(png|ico|jpeg
0b50: 29 24 20 68 74 74 70 3a 2f 2f 66 72 65 73 68 63  )$ http://freshc
0b60: 6f 64 65 2e 63 6c 75 62 2f 69 6d 67 2f 63 68 61  ode.club/img/cha
0b70: 6e 67 65 73 2e 70 6e 67 20 5b 52 3d 33 30 31 2c  nges.png [R=301,
0b80: 4c 5d 0a 0a 0a                                   L]...