route.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. call_user_func(function() { // to prevent variable scope leak
  3. Route::pattern('id', '[1-9][0-9]{0,9}');
  4. Route::pattern('blog_username', '[a-zA-Z0-9_\-]{1,20}');
  5. switch (UOJConfig::$data['switch']['blog-domain-mode']) {
  6. case 1:
  7. $domain = '{blog_username}.'.UOJConfig::$data['web']['main']['host'];
  8. $prefix = '';
  9. break;
  10. case 2:
  11. $domain = UOJConfig::$data['web']['blog']['host'];
  12. $prefix = '/{blog_username}';
  13. break;
  14. case 3:
  15. $domain = UOJConfig::$data['web']['main']['host'];
  16. $prefix = '/blog/{blog_username}';
  17. break;
  18. default:
  19. // An unknown or missing mode used to leave $domain and $prefix
  20. // undefined, which registered these routes with an empty prefix and
  21. // no domain check: they leaked onto the main domain while every real
  22. // blog URL (the ones HTML::blog_url() builds) 404'd. Degrade to the
  23. // path-prefix form instead of breaking silently.
  24. $domain = UOJConfig::$data['web']['main']['host'];
  25. $prefix = '/blog/{blog_username}';
  26. break;
  27. }
  28. Route::group([
  29. 'domain' => UOJConfig::$data['web']['blog']['host']
  30. ], function() {
  31. Route::any("/", '/blogs.php');
  32. Route::any("/blogs/{id}", '/blog_show.php');
  33. Route::any("/post/{id}", '/blog_show.php');
  34. }
  35. );
  36. Route::group([
  37. 'domain' => $domain,
  38. 'onload' => function() {
  39. UOJContext::setupBlog();
  40. }
  41. ], function() use ($prefix) {
  42. Route::any("$prefix/", '/subdomain/blog/archive.php');
  43. Route::any("$prefix/archive", '/subdomain/blog/archive.php');
  44. Route::any("$prefix/aboutme", '/subdomain/blog/aboutme.php');
  45. Route::any("$prefix/click-zan", '/click_zan.php');
  46. Route::any("$prefix/blogs/{id}", '/blog_show.php');
  47. Route::any("$prefix/post/{id}", '/subdomain/blog/blog.php');
  48. Route::any("$prefix/slide/{id}", '/subdomain/blog/slide.php');
  49. Route::any("$prefix/post/(?:{id}|new)/write", '/subdomain/blog/blog_write.php');
  50. Route::any("$prefix/slide/(?:{id}|new)/write", '/subdomain/blog/slide_write.php');
  51. Route::any("$prefix/post/{id}/delete", '/subdomain/blog/blog_delete.php');
  52. }
  53. );
  54. });