ect (or 2du) 8 лет назад
Родитель
Сommit
23cbd8080e
3 измененных файлов с 138 добавлено и 129 удалено
  1. 136 127
      app.py
  2. 1 1
      set_mark/redirect_pas.py
  3. 1 1
      set_mark/toc_pas.py

+ 136 - 127
app.py

@@ -436,7 +436,7 @@ def not_close_topic():
         menu = [['manager', '관리자']]
         menu = [['manager', '관리자']]
     )))
     )))
 
 
-@route('/image/<name:path>')
+@route('/image/<name>')
 def static(name = None):
 def static(name = None):
     if(os.path.exists(os.path.join('image', name))):
     if(os.path.exists(os.path.join('image', name))):
         return(static_file(name, root = 'image'))
         return(static_file(name, root = 'image'))
@@ -466,7 +466,7 @@ def acl_list():
         menu = [['other', '기타']]
         menu = [['other', '기타']]
     )))
     )))
 
 
-@route('/admin_plus/<name:path>', method=['POST', 'GET'])
+@route('/admin_plus/<name>', method=['POST', 'GET'])
 def admin_plus(name = None):
 def admin_plus(name = None):
     if(request.method == 'POST'):
     if(request.method == 'POST'):
         if(admin_check(conn, None, 'admin_plus (' + name + ')') != 1):
         if(admin_check(conn, None, 'admin_plus (' + name + ')') != 1):
@@ -569,22 +569,26 @@ def admin_list():
         menu = [['other', '기타']]
         menu = [['other', '기타']]
     )))
     )))
         
         
-@route('/history/<name:path>/r/<num:int>/hidden')
-def history_hidden(name = None, num = None):
-    if(admin_check(conn, 6, 'history_hidden (' + name + '#' + str(num) + ')') == 1):
-        curs.execute("select title from history where title = ? and id = ? and hide = 'O'", [name, str(num)])
-        if(curs.fetchall()):
-            curs.execute("update history set hide = '' where title = ? and id = ?", [name, str(num)])
-        else:
-            curs.execute("update history set hide = 'O' where title = ? and id = ?", [name, str(num)])
-            
-        conn.commit()
+@route('/hidden/<name:path>')
+def history_hidden(name = None):
+    num = request.query.num or None
+    if(int(num)):
+        num = int(num)
+
+        if(admin_check(conn, 6, 'history_hidden (' + name + '#' + str(num) + ')') == 1):
+            curs.execute("select title from history where title = ? and id = ? and hide = 'O'", [name, str(num)])
+            if(curs.fetchall()):
+                curs.execute("update history set hide = '' where title = ? and id = ?", [name, str(num)])
+            else:
+                curs.execute("update history set hide = 'O' where title = ? and id = ?", [name, str(num)])
+                
+            conn.commit()
     
     
     return(redirect('/history/' + url_pas(name)))
     return(redirect('/history/' + url_pas(name)))
         
         
 @route('/user_log')
 @route('/user_log')
-@route('/user_log/<num:int>')
-def user_log(num = 1):
+def user_log():
+    num = int(request.query.num or 1)
     if(num * 50 > 0):
     if(num * 50 > 0):
         sql_num = num * 50 - 50
         sql_num = num * 50 - 50
     else:
     else:
@@ -624,7 +628,7 @@ def user_log(num = 1):
 
 
         list_data += '</ul><hr><ul><li>이 위키에는 ' + str(count) + '명의 사람이 있습니다.</li></ul>'
         list_data += '</ul><hr><ul><li>이 위키에는 ' + str(count) + '명의 사람이 있습니다.</li></ul>'
 
 
-    list_data += next_fix('/user_log/', num, user_list)
+    list_data += next_fix('/user_log?num=', num, user_list)
 
 
     return(html_minify(template('index', 
     return(html_minify(template('index', 
         imp = ['사용자 가입 기록', wiki_set(conn, 1), custom(conn), other2([0, 0])],
         imp = ['사용자 가입 기록', wiki_set(conn, 1), custom(conn), other2([0, 0])],
@@ -633,8 +637,8 @@ def user_log(num = 1):
     )))
     )))
 
 
 @route('/admin_log')
 @route('/admin_log')
-@route('/admin_log/<num:int>')
-def user_log(num = 1):
+def user_log():
+    num = int(request.query.num or 1)
     if(num * 50 > 0):
     if(num * 50 > 0):
         sql_num = num * 50 - 50
         sql_num = num * 50 - 50
     else:
     else:
@@ -649,7 +653,7 @@ def user_log(num = 1):
         list_data += '<li>' + ip + ' / ' + data[1] + ' / ' + data[2] + '</li>'
         list_data += '<li>' + ip + ' / ' + data[1] + ' / ' + data[2] + '</li>'
 
 
     list_data += '</ul><hr><ul><li>주의 : 권한 사용 안하고 열람만 해도 기록되는 경우도 있습니다.</li></ul>'
     list_data += '</ul><hr><ul><li>주의 : 권한 사용 안하고 열람만 해도 기록되는 경우도 있습니다.</li></ul>'
-    list_data += next_fix('/admin_log/', num, get_list)
+    list_data += next_fix('/admin_log?num=', num, get_list)
 
 
     return(html_minify(template('index', 
     return(html_minify(template('index', 
         imp = ['권한 사용 기록', wiki_set(conn, 1), custom(conn), other2([0, 0])],
         imp = ['권한 사용 기록', wiki_set(conn, 1), custom(conn), other2([0, 0])],
@@ -701,8 +705,8 @@ def indexing():
     return(redirect('/'))        
     return(redirect('/'))        
         
         
 @route('/xref/<name:path>')
 @route('/xref/<name:path>')
-@route('/xref/<name:path>/num/<num:int>')
-def xref(name = None, num = 1):
+def xref(name = None):
+    num = int(request.query.num or 1)
     if(num * 50 > 0):
     if(num * 50 > 0):
         sql_num = num * 50 - 50
         sql_num = num * 50 - 50
     else:
     else:
@@ -730,7 +734,7 @@ def xref(name = None, num = 1):
         if(re.search('^틀:', data[0])):
         if(re.search('^틀:', data[0])):
             div += '<li><a id="inside" href="/xref/' + url_pas(data[0]) + '">' + data[0] + '</a> (역링크)</li>'
             div += '<li><a id="inside" href="/xref/' + url_pas(data[0]) + '">' + data[0] + '</a> (역링크)</li>'
       
       
-    div += '</ul>' + next_fix('/xref/' + url_pas(name) + '/num/', num, data_list)
+    div += '</ul>' + next_fix('/xref/' + url_pas(name) + '?num=', num, data_list)
     
     
     return(html_minify(template('index', 
     return(html_minify(template('index', 
         imp = [name, wiki_set(conn, 1), custom(conn), other2([' (역링크)', 0])],
         imp = [name, wiki_set(conn, 1), custom(conn), other2([' (역링크)', 0])],
@@ -739,8 +743,8 @@ def xref(name = None, num = 1):
     )))
     )))
 
 
 @route('/please')
 @route('/please')
-@route('/please/<num:int>')
-def please(num = 1):
+def please():
+    num = int(request.query.num or 1)
     if(num * 50 > 0):
     if(num * 50 > 0):
         sql_num = num * 50 - 50
         sql_num = num * 50 - 50
     else:
     else:
@@ -756,7 +760,7 @@ def please(num = 1):
             div += '<li><a class="not_thing" href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'        
             div += '<li><a class="not_thing" href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'        
             var = data[0]
             var = data[0]
         
         
-    div += '</ul>' + next_fix('/please/', num, data_list)
+    div += '</ul>' + next_fix('/please?num=', num, data_list)
     
     
     return(html_minify(template('index', 
     return(html_minify(template('index', 
         imp = ['필요한 문서', wiki_set(conn, 1), custom(conn), other2([0, 0])],
         imp = ['필요한 문서', wiki_set(conn, 1), custom(conn), other2([0, 0])],
@@ -808,12 +812,10 @@ def recent_discuss(tools = 'normal'):
     )))
     )))
 
 
 @route('/block_log')
 @route('/block_log')
-@route('/block_log/<num:int>')
 @route('/block_log/<tool2:re:ip|user|never_end|can_end|end|now>')
 @route('/block_log/<tool2:re:ip|user|never_end|can_end|end|now>')
-@route('/block_log/<tool2:re:ip|user|never_end|can_end|end|now>/<num:int>')
-@route('/<tool:re:block_user|block_admin>/<name:path>')
-@route('/<tool:re:block_user|block_admin>/<name:path>/<num:int>')
-def block_log(num = 1, name = None, tool = None, tool2 = None):
+@route('/<tool:re:block_user|block_admin>/<name>')
+def block_log(name = None, tool = None, tool2 = None):
+    num = int(request.query.num or 1)
     if(num * 50 > 0):
     if(num * 50 > 0):
         sql_num = num * 50 - 50
         sql_num = num * 50 - 50
     else:
     else:
@@ -899,11 +901,11 @@ def block_log(num = 1, name = None, tool = None, tool2 = None):
 
 
     if(not name):
     if(not name):
         if(not tool2):
         if(not tool2):
-            div += next_fix('/block_log/', num, data_list)
+            div += next_fix('/block_log?num=', num, data_list)
         else:
         else:
-            div += next_fix('/block_log/' + url_pas(tool2) + '/', num, data_list)
+            div += next_fix('/block_log/' + url_pas(tool2) + '?num=', num, data_list)
     else:
     else:
-        div += next_fix('/' + url_pas(tool) + '/' + url_pas(name) + '/', num, data_list)
+        div += next_fix('/' + url_pas(tool) + '/' + url_pas(name) + '?num=', num, data_list)
                 
                 
     return(html_minify(template('index', 
     return(html_minify(template('index', 
         imp = ['차단 기록', wiki_set(conn, 1), custom(conn), other2([sub, 0])],
         imp = ['차단 기록', wiki_set(conn, 1), custom(conn), other2([sub, 0])],
@@ -925,8 +927,8 @@ def goto():
         return(redirect('/search/' + url_pas(request.forms.search)))
         return(redirect('/search/' + url_pas(request.forms.search)))
 
 
 @route('/search/<name:path>')
 @route('/search/<name:path>')
-@route('/search/<name:path>/<num:int>')
-def deep_search(name = None, num = 1):
+def deep_search(name = None):
+    num = int(request.query.num or 1)
     if(num * 50 > 0):
     if(num * 50 > 0):
         sql_num = num * 50 - 50
         sql_num = num * 50 - 50
     else:
     else:
@@ -936,6 +938,7 @@ def deep_search(name = None, num = 1):
     div_plus = ''
     div_plus = ''
     no = 0
     no = 0
     start = 2
     start = 2
+    test = ''
 
 
     curs.execute("select title from data where title = ?", [name])
     curs.execute("select title from data where title = ?", [name])
     if(curs.fetchall()):
     if(curs.fetchall()):
@@ -943,16 +946,21 @@ def deep_search(name = None, num = 1):
     else:
     else:
         div = '<ul><li>문서가 없습니다. <a class="not_thing" href="/w/' + url_pas(name) + '">바로가기</a></li><hr>'
         div = '<ul><li>문서가 없습니다. <a class="not_thing" href="/w/' + url_pas(name) + '">바로가기</a></li><hr>'
 
 
-    curs.execute("select distinct title from data where title like ? or data like ? order by case when title like ? then 1 else 2 end limit ?, '50'", ['%' + name + '%', '%' + name + '%', '%' + name + '%', str(sql_num)])
+    curs.execute("select distinct title, case when title like ? then '제목' else '내용' end from data where title like ? or data like ? order by case when title like ? then 1 else 2 end limit ?, '50'", ['%' + name + '%', '%' + name + '%', '%' + name + '%', '%' + name + '%', str(sql_num)])
     all_list = curs.fetchall()
     all_list = curs.fetchall()
     if(all_list):
     if(all_list):
+        test = all_list[0][1]
         for data in all_list:
         for data in all_list:
-            div_plus += '<li><a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'
+            if(data[1] != test):
+                div_plus += '<hr>'
+                test = data[1]
+
+            div_plus += '<li><a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a> (' + data[1] + ')</li>'
     else:
     else:
         div += '<li>검색 결과 없음</li>'
         div += '<li>검색 결과 없음</li>'
 
 
     div += div_plus + '</ul>'
     div += div_plus + '</ul>'
-    div += next_fix('/search/' + url_pas(name) + '/', num, all_list)
+    div += next_fix('/search/' + url_pas(name) + '?num=', num, all_list)
     
     
     return(html_minify(template('index', 
     return(html_minify(template('index', 
         imp = [name, wiki_set(conn, 1), custom(conn), other2([' (검색)', 0])],
         imp = [name, wiki_set(conn, 1), custom(conn), other2([' (검색)', 0])],
@@ -961,11 +969,12 @@ def deep_search(name = None, num = 1):
     )))
     )))
          
          
 @route('/raw/<name:path>')
 @route('/raw/<name:path>')
-@route('/raw/<name:path>/r/<num:int>')
-@route('/topic/<name:path>/sub/<sub_t:path>/raw/<num:int>')
+@route('/topic/<name:path>/sub/<sub_t>/raw/<num:int>')
 def raw_view(name = None, sub_t = None, num = None):
 def raw_view(name = None, sub_t = None, num = None):
     v_name = name
     v_name = name
     sub = ' (원본)'
     sub = ' (원본)'
+    if(not num):
+        num = int(request.query.num or None)
     
     
     if(not sub_t and num):
     if(not sub_t and num):
         curs.execute("select title from history where title = ? and id = ? and hide = 'O'", [name, str(num)])
         curs.execute("select title from history where title = ? and id = ? and hide = 'O'", [name, str(num)])
@@ -1002,11 +1011,12 @@ def raw_view(name = None, sub_t = None, num = None):
     else:
     else:
         return(redirect('/w/' + url_pas(name)))
         return(redirect('/w/' + url_pas(name)))
         
         
-@route('/revert/<name:path>/r/<num:int>', method=['POST', 'GET'])
-def revert(name = None, num = None):
+@route('/revert/<name:path>', method=['POST', 'GET'])
+def revert(name = None):
     ip = ip_check()
     ip = ip_check()
     can = acl_check(conn, name)
     can = acl_check(conn, name)
     today = get_time()
     today = get_time()
+    num = int(request.query.num or None)
     
     
     if(request.method == 'POST'):
     if(request.method == 'POST'):
         if(captcha_post(request.forms.get('g-recaptcha-response'), conn) == 1):
         if(captcha_post(request.forms.get('g-recaptcha-response'), conn) == 1):
@@ -1063,7 +1073,7 @@ def revert(name = None, num = None):
             ip_warring = ''
             ip_warring = ''
 
 
         return(html_minify(template('index', 
         return(html_minify(template('index', 
-            imp = [name, wiki_set(conn, 1), custom_data, other2([' (되돌리기)', 0])],
+            imp = [name, wiki_set(conn, 1), custom_data, other2([' (되돌리기) (' + request.query.num + '판)', 0])],
             data =  ip_warring + ' \
             data =  ip_warring + ' \
                     <form method="post"> \
                     <form method="post"> \
                         <input placeholder="사유" name="send" type="text"><hr> \
                         <input placeholder="사유" name="send" type="text"><hr> \
@@ -1127,7 +1137,7 @@ def edit_filter():
         menu = [['manager', '관리자']]
         menu = [['manager', '관리자']]
     )))
     )))
 
 
-@route('/edit_filter/<name:path>/delete', method=['POST', 'GET'])
+@route('/edit_filter/<name>/delete', method=['POST', 'GET'])
 def delete_edit_filter(name = None):
 def delete_edit_filter(name = None):
     if(admin_check(conn, 1, 'edit_filter delete') != 1):
     if(admin_check(conn, 1, 'edit_filter delete') != 1):
         return(re_error('/error/3'))
         return(re_error('/error/3'))
@@ -1137,7 +1147,7 @@ def delete_edit_filter(name = None):
 
 
     return(redirect('/edit_filter'))
     return(redirect('/edit_filter'))
 
 
-@route('/edit_filter/<name:path>', method=['POST', 'GET'])
+@route('/edit_filter/<name>', method=['POST', 'GET'])
 def set_edit_filter(name = None):
 def set_edit_filter(name = None):
     if(request.method == 'POST'):
     if(request.method == 'POST'):
         if(admin_check(conn, 1, 'edit_filter edit') != 1):
         if(admin_check(conn, 1, 'edit_filter edit') != 1):
@@ -1219,9 +1229,7 @@ def set_edit_filter(name = None):
         )))
         )))
 
 
 @route('/edit/<name:path>', method=['POST', 'GET'])
 @route('/edit/<name:path>', method=['POST', 'GET'])
-@route('/edit/<name:path>/from/<name2:path>', method=['POST', 'GET'])
-@route('/edit/<name:path>/section/<num:int>', method=['POST', 'GET'])
-def edit(name = None, name2 = None, num = None):
+def edit(name = None):
     ip = ip_check()
     ip = ip_check()
     can = acl_check(conn, name)
     can = acl_check(conn, name)
 
 
@@ -1306,11 +1314,11 @@ def edit(name = None, name2 = None, num = None):
         curs.execute("select data from data where title = ?", [name])
         curs.execute("select data from data where title = ?", [name])
         old = curs.fetchall()
         old = curs.fetchall()
         if(old):
         if(old):
-            if(not num and request.forms.otent != old[0][0]):
+            if(not request.query.section and request.forms.otent != old[0][0]):
                 return(re_error(conn, '/error/12'))
                 return(re_error(conn, '/error/12'))
 
 
             leng = leng_check(len(request.forms.otent), len(content))
             leng = leng_check(len(request.forms.otent), len(content))
-            if(num):
+            if(request.query.section):
                 content = old[0][0].replace(request.forms.otent, content)      
                 content = old[0][0].replace(request.forms.otent, content)      
                 
                 
             curs.execute("update data set data = ? where title = ?", [content, name])
             curs.execute("update data set data = ? where title = ?", [content, name])
@@ -1333,7 +1341,7 @@ def edit(name = None, name2 = None, num = None):
         curs.execute("select data from data where title = ?", [name])
         curs.execute("select data from data where title = ?", [name])
         new = curs.fetchall()
         new = curs.fetchall()
         if(new):
         if(new):
-            if(num):
+            if(request.query.section):
                 i = 0
                 i = 0
                 j = 0
                 j = 0
                 
                 
@@ -1341,7 +1349,7 @@ def edit(name = None, name2 = None, num = None):
                 while(1):
                 while(1):
                     m = re.search("((?:={1,6})\s?(?:[^=]*)\s?(?:={1,6})(?:\s+)?\n(?:(?:(?:(?!(?:={1,6})\s?(?:[^=]*)\s?(?:={1,6})(?:\s+)?\n).)*)(?:\n)?)+)", data)
                     m = re.search("((?:={1,6})\s?(?:[^=]*)\s?(?:={1,6})(?:\s+)?\n(?:(?:(?:(?!(?:={1,6})\s?(?:[^=]*)\s?(?:={1,6})(?:\s+)?\n).)*)(?:\n)?)+)", data)
                     if(m):
                     if(m):
-                        if(i == num - 1):
+                        if(i == int(request.query.section) - 1):
                             g = m.groups()
                             g = m.groups()
                             data = re.sub("\r\n$", "", g[0])
                             data = re.sub("\r\n$", "", g[0])
                             
                             
@@ -1361,24 +1369,21 @@ def edit(name = None, name2 = None, num = None):
                 data = new[0][0]
                 data = new[0][0]
         else:
         else:
             data = ''
             data = ''
-
-        if(num):
-            action = '/section/' + str(num)
-        else:
-            action = ''
             
             
         data2 = data
         data2 = data
-        if(not num):
+        if(not request.query.section):
             get_name = '<form method="post" id="get_edit" action="/edit_get/' + url_pas(name) + '"> \
             get_name = '<form method="post" id="get_edit" action="/edit_get/' + url_pas(name) + '"> \
                             <input placeholder="불러 올 문서" name="name" style="width: 50%;" type="text"> \
                             <input placeholder="불러 올 문서" name="name" style="width: 50%;" type="text"> \
                             <button id="preview" class="btn" type="submit">불러오기</button> \
                             <button id="preview" class="btn" type="submit">불러오기</button> \
                         </form><hr>'
                         </form><hr>'
+            action = ''
         else:
         else:
             get_name = ''
             get_name = ''
+            action = '?section=' + request.query.section
             
             
         captcha = captcha_get(conn)
         captcha = captcha_get(conn)
-        if(name2):
-            curs.execute("select data from data where title = ?", [name2])
+        if(request.query.froms):
+            curs.execute("select data from data where title = ?", [request.query.froms])
             get_data = curs.fetchall()
             get_data = curs.fetchall()
             if(get_data):
             if(get_data):
                 data = get_data[0][0]
                 data = get_data[0][0]
@@ -1400,11 +1405,10 @@ def edit(name = None, name2 = None, num = None):
         
         
 @route('/edit_get/<name:path>', method=['POST'])
 @route('/edit_get/<name:path>', method=['POST'])
 def edit_get(name = None):
 def edit_get(name = None):
-    return(redirect('/edit/' + url_pas(name) + '/from/' + url_pas(request.forms.name)))
+    return(redirect('/edit/' + url_pas(name) + '?froms=' + url_pas(request.forms.name)))
 
 
 @route('/preview/<name:path>', method=['POST'])
 @route('/preview/<name:path>', method=['POST'])
-@route('/preview/<name:path>/section/<num:int>', method=['POST'])
-def preview(name = None, num = None):
+def preview(name = None):
     ip = ip_check()
     ip = ip_check()
     can = acl_check(conn, name)
     can = acl_check(conn, name)
     
     
@@ -1416,8 +1420,8 @@ def preview(name = None, num = None):
     enddata = namumark(conn, name, newdata, 0, 0, 1)
     enddata = namumark(conn, name, newdata, 0, 0, 1)
     captcha = captcha_get(conn)
     captcha = captcha_get(conn)
 
 
-    if(num):
-        action = '/section/' + str(num)
+    if(request.query.section):
+        action = '?section=' + request.query.section
     else:
     else:
         action = ''
         action = ''
 
 
@@ -1645,7 +1649,7 @@ def manager(num = 1):
             )))
             )))
     elif(num == 100):
     elif(num == 100):
         if(request.method == 'POST'):
         if(request.method == 'POST'):
-            return(redirect('/check/' + url_pas(request.forms.name) + '/' + url_pas(request.forms.name2)))
+            return(redirect('/check/' + url_pas(request.forms.name) + '?plus=' + url_pas(request.forms.name2)))
         else:
         else:
             return(html_minify(template('index', 
             return(html_minify(template('index', 
                 imp = ['검사', wiki_set(conn, 1), custom(conn), other2([0, 0])],
                 imp = ['검사', wiki_set(conn, 1), custom(conn), other2([0, 0])],
@@ -1660,8 +1664,9 @@ def manager(num = 1):
         return(redirect('/'))
         return(redirect('/'))
         
         
 @route('/title_index')
 @route('/title_index')
-@route('/title_index/<num:int>/<page:int>')
-def title_index(num = 100, page = 1):
+def title_index():
+    page = int(request.query.page or 1)
+    num = int(request.query.num or 100)
     if(page * num > 0):
     if(page * num > 0):
         sql_num = page * num - num
         sql_num = page * num - num
     else:
     else:
@@ -1675,7 +1680,7 @@ def title_index(num = 100, page = 1):
     if(num > 1000):
     if(num > 1000):
         return(re_error(conn, '/error/3'))
         return(re_error(conn, '/error/3'))
 
 
-    data = '<ul><a href="/title_index/0/1">(전체)</a> <a href="/title_index/250/1">(250)</a> <a href="/title_index/500/1">(500)</a> <a href="/title_index/1000/1">(1000)</a><hr>'
+    data = '<ul><a href="/title_index?num=0">(전체)</a> <a href="/title_index?num=250">(250)</a> <a href="/title_index?num=500">(500)</a> <a href="/title_index?num=1000">(1000)</a><hr>'
 
 
     if(num == 0):
     if(num == 0):
         curs.execute("select data from other where name = 'all_title'")
         curs.execute("select data from other where name = 'all_title'")
@@ -1721,7 +1726,7 @@ def title_index(num = 100, page = 1):
         data += '<li>나머지 문서는 총 ' + str(count_end[5]) + '개의 문서가 있습니다.</li>'
         data += '<li>나머지 문서는 총 ' + str(count_end[5]) + '개의 문서가 있습니다.</li>'
 
 
     if(num != 0):
     if(num != 0):
-        data += '</ul>' + next_fix('/title_index/' + str(num) + '/', page, title_list, num)
+        data += '</ul>' + next_fix('/title_index?num=' + str(num) + '&page=', page, title_list, num)
     
     
     if(' (' + str(num) + '개)' == ' (0개)'):
     if(' (' + str(num) + '개)' == ' (0개)'):
         sub = 0
         sub = 0
@@ -1734,7 +1739,7 @@ def title_index(num = 100, page = 1):
         menu = [['other', '기타']]
         menu = [['other', '기타']]
     )))
     )))
         
         
-@route('/topic/<name:path>/sub/<sub:path>/b/<num:int>')
+@route('/topic/<name:path>/sub/<sub>/b/<num:int>')
 def topic_block(name = None, sub = None, num = None):
 def topic_block(name = None, sub = None, num = None):
     if(admin_check(conn, 3, 'blind (' + name + ' - ' + sub + '#' + str(num) + ')') != 1):
     if(admin_check(conn, 3, 'blind (' + name + ' - ' + sub + '#' + str(num) + ')') != 1):
         return(re_error(conn, '/error/3'))
         return(re_error(conn, '/error/3'))
@@ -1752,7 +1757,7 @@ def topic_block(name = None, sub = None, num = None):
         
         
     return(redirect('/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '#' + str(num)))
     return(redirect('/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '#' + str(num)))
         
         
-@route('/topic/<name:path>/sub/<sub:path>/notice/<num:int>')
+@route('/topic/<name:path>/sub/<sub>/notice/<num:int>')
 def topic_top(name = None, sub = None, num = None):
 def topic_top(name = None, sub = None, num = None):
     if(admin_check(conn, 3, 'notice (' + name + ' - ' + sub + '#' + str(num) + ')') != 1):
     if(admin_check(conn, 3, 'notice (' + name + ' - ' + sub + '#' + str(num) + ')') != 1):
         return(re_error(conn, '/error/3'))
         return(re_error(conn, '/error/3'))
@@ -1773,7 +1778,7 @@ def topic_top(name = None, sub = None, num = None):
 
 
     return(redirect('/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '#' + str(num)))        
     return(redirect('/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '#' + str(num)))        
         
         
-@route('/topic/<name:path>/sub/<sub:path>/tool/<tool:re:close|stop|agree>')
+@route('/topic/<name:path>/sub/<sub>/tool/<tool:re:close|stop|agree>')
 def topic_stop(name = None, sub = None, tool = None):
 def topic_stop(name = None, sub = None, tool = None):
     if(tool == 'close'):
     if(tool == 'close'):
         set_list = ['O', '', '토론 닫기', '토론 열림']
         set_list = ['O', '', '토론 닫기', '토론 열림']
@@ -1816,7 +1821,7 @@ def topic_stop(name = None, sub = None, tool = None):
         
         
     return(redirect('/topic/' + url_pas(name) + '/sub/' + url_pas(sub)))    
     return(redirect('/topic/' + url_pas(name) + '/sub/' + url_pas(sub)))    
 
 
-@route('/topic/<name:path>/sub/<sub:path>/admin/<num:int>')
+@route('/topic/<name:path>/sub/<sub>/admin/<num:int>')
 def topic_admin(name = None, sub = None, num = None):
 def topic_admin(name = None, sub = None, num = None):
     curs.execute("select block, ip, date from topic where title = ? and sub = ? and id = ?", [name, sub, str(num)])
     curs.execute("select block, ip, date from topic where title = ? and sub = ? and id = ?", [name, sub, str(num)])
     data = curs.fetchall()
     data = curs.fetchall()
@@ -1868,7 +1873,7 @@ def topic_admin(name = None, sub = None, num = None):
         menu = [['topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '#' + str(num), '토론']]
         menu = [['topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '#' + str(num), '토론']]
     )))
     )))
 
 
-@route('/topic/<name:path>/sub/<sub:path>', method=['POST', 'GET'])
+@route('/topic/<name:path>/sub/<sub>', method=['POST', 'GET'])
 def topic(name = None, sub = None):
 def topic(name = None, sub = None):
     ban = topic_check(conn, name, sub)
     ban = topic_check(conn, name, sub)
     admin = admin_check(conn, 3, None)
     admin = admin_check(conn, 3, None)
@@ -2200,37 +2205,37 @@ def change_password():
             menu = [['user', '사용자']]
             menu = [['user', '사용자']]
         )))
         )))
                 
                 
-@route('/check/<name:path>')
-@route('/check/<name:path>/<name2:path>')
-def user_check(name = None, name2 = None):
-    curs.execute("select acl from user where id = ? or id = ?", [name, name2])
+@route('/check/<name>')
+def user_check(name = None):
+    if(admin_check(conn, 4, 'check (' + name + ')') != 1):
+        return(re_error(conn, '/error/3'))
+
+    curs.execute("select acl from user where id = ? or id = ?", [name, request.query.plus])
     user = curs.fetchall()
     user = curs.fetchall()
     if(user and user[0][0] != 'user'):
     if(user and user[0][0] != 'user'):
         if(admin_check(conn, None, None) != 1):
         if(admin_check(conn, None, None) != 1):
             return(re_error(conn, '/error/4'))
             return(re_error(conn, '/error/4'))
-
-    if(admin_check(conn, 4, 'check (' + name + ')') != 1):
-        return(re_error(conn, '/error/3'))
     
     
-    if(name2):
+    if(request.query.plus):
         if(re.search('(?:\.|:)', name)):
         if(re.search('(?:\.|:)', name)):
-            if(re.search('(?:\.|:)', name2)):
-                curs.execute("select name, ip, ua, today from ua_d where ip = ? or ip = ? order by today desc", [name, name2])
+            if(re.search('(?:\.|:)', request.query.plus)):
+                curs.execute("select name, ip, ua, today from ua_d where ip = ? or ip = ? order by today desc", [name, request.query.plus])
             else:
             else:
-                curs.execute("select name, ip, ua, today from ua_d where ip = ? or name = ? order by today desc", [name, name2])
+                curs.execute("select name, ip, ua, today from ua_d where ip = ? or name = ? order by today desc", [name, request.query.plus])
         else:
         else:
-            if(re.search('(?:\.|:)', name2)):
-                curs.execute("select name, ip, ua, today from ua_d where name = ? or ip = ? order by today desc", [name, name2])
+            if(re.search('(?:\.|:)', request.query.plus)):
+                curs.execute("select name, ip, ua, today from ua_d where name = ? or ip = ? order by today desc", [name, request.query.plus])
             else:
             else:
-                curs.execute("select name, ip, ua, today from ua_d where name = ? or name = ? order by today desc", [name, name2])
+                curs.execute("select name, ip, ua, today from ua_d where name = ? or name = ? order by today desc", [name, request.query.plus])
     elif(re.search('(?:\.|:)', name)):
     elif(re.search('(?:\.|:)', name)):
         curs.execute("select name, ip, ua, today from ua_d where ip = ? order by today desc", [name])
         curs.execute("select name, ip, ua, today from ua_d where ip = ? order by today desc", [name])
     else:
     else:
         curs.execute("select name, ip, ua, today from ua_d where name = ? order by today desc", [name])
         curs.execute("select name, ip, ua, today from ua_d where name = ? order by today desc", [name])
+    
     record = curs.fetchall()
     record = curs.fetchall()
     if(record):
     if(record):
         div = '<table style="width: 100%; text-align: center;"><tbody><tr>'
         div = '<table style="width: 100%; text-align: center;"><tbody><tr>'
-        div = '<td style="width: 33.3%;">이름</td><td style="width: 33.3%;">아이피</td><td style="width: 33.3%;">언제</td></tr>'
+        div += '<td style="width: 33.3%;">이름</td><td style="width: 33.3%;">아이피</td><td style="width: 33.3%;">언제</td></tr>'
 
 
         for data in record:
         for data in record:
             if(data[2]):
             if(data[2]):
@@ -2243,7 +2248,7 @@ def user_check(name = None, name2 = None):
         
         
         div += '</tbody></table>'
         div += '</tbody></table>'
     else:
     else:
-        div = ''
+        return(re_error(conn, '/error/5'))
             
             
     return(html_minify(template('index',    
     return(html_minify(template('index',    
         imp = ['다중 검사', wiki_set(conn, 1), custom(conn), other2([0, 0])],
         imp = ['다중 검사', wiki_set(conn, 1), custom(conn), other2([0, 0])],
@@ -2326,7 +2331,7 @@ def logout():
 
 
     return(redirect('/user'))
     return(redirect('/user'))
     
     
-@route('/ban/<name:path>', method=['POST', 'GET'])
+@route('/ban/<name>', method=['POST', 'GET'])
 def user_ban(name = None):
 def user_ban(name = None):
     curs.execute("select acl from user where id = ?", [name])
     curs.execute("select acl from user where id = ?", [name])
     user = curs.fetchall()
     user = curs.fetchall()
@@ -2555,7 +2560,7 @@ def acl(name = None):
             menu = [['w/' + url_pas(name), '문서'], ['manager', '관리자']]
             menu = [['w/' + url_pas(name), '문서'], ['manager', '관리자']]
         )))
         )))
             
             
-@route('/admin/<name:path>', method=['POST', 'GET'])
+@route('/admin/<name>', method=['POST', 'GET'])
 def user_admin(name = None):
 def user_admin(name = None):
     owner = admin_check(conn, None, None)
     owner = admin_check(conn, None, None)
 
 
@@ -2618,12 +2623,15 @@ def user_admin(name = None):
             menu = [['manager', '관리자']]
             menu = [['manager', '관리자']]
         )))
         )))
     
     
-@route('/w/<name:path>/r/<first:int>/diff/<second:int>')
-def diff_data(name = None, first = None, second = None):
-    curs.execute("select data from history where id = ? and title = ?", [str(first), name])
+@route('/diff/<name:path>')
+def diff_data(name = None):
+    first = request.query.first or '1'
+    second = request.query.second or '1'
+
+    curs.execute("select data from history where id = ? and title = ?", [first, name])
     first_raw_data = curs.fetchall()
     first_raw_data = curs.fetchall()
     if(first_raw_data):
     if(first_raw_data):
-        curs.execute("select data from history where id = ? and title = ?", [str(second), name])
+        curs.execute("select data from history where id = ? and title = ?", [second, name])
         second_raw_data = curs.fetchall()
         second_raw_data = curs.fetchall()
         if(second_raw_data):
         if(second_raw_data):
             first_data = html.escape(first_raw_data[0][0])            
             first_data = html.escape(first_raw_data[0][0])            
@@ -2661,14 +2669,13 @@ def down(name = None):
     )))
     )))
 
 
 @route('/w/<name:path>')
 @route('/w/<name:path>')
-@route('/w/<name:path>/r/<num:int>')
-@route('/w/<name:path>/from/<redirect:path>')
-def read_view(name = None, num = None, redirect = None):
+def read_view(name = None):
     data_none = 0
     data_none = 0
     sub = ''
     sub = ''
     acl = ''
     acl = ''
     div = ''
     div = ''
     topic = 0
     topic = 0
+    num = request.query.num or None
     
     
     if(not num):
     if(not num):
         session = request.environ.get('beaker.session')
         session = request.environ.get('beaker.session')
@@ -2681,6 +2688,9 @@ def read_view(name = None, num = None, redirect = None):
                     d = re.sub('([^\n]+)\n', '', d, 1)
                     d = re.sub('([^\n]+)\n', '', d, 1)
                 session['View_List'] = d
                 session['View_List'] = d
         else:
         else:
+            if(int(num)):
+                num = int(num)
+
             session['View_List'] = name + '\n'
             session['View_List'] = name + '\n'
 
 
 
 
@@ -2793,7 +2803,7 @@ def read_view(name = None, num = None, redirect = None):
             elif(data[0][0] == 'user'):
             elif(data[0][0] == 'user'):
                 acl += ' (가입자)'
                 acl += ' (가입자)'
             
             
-    if(redirect):
+    if(request.query.froms):
         elsedata = re.sub("^#(?:redirect|넘겨주기) (?P<in>[^\n]*)", " * [[\g<in>]] 문서로 넘겨주기", elsedata)
         elsedata = re.sub("^#(?:redirect|넘겨주기) (?P<in>[^\n]*)", " * [[\g<in>]] 문서로 넘겨주기", elsedata)
             
             
     enddata = namumark(conn, name, elsedata, 0, 0, 1)
     enddata = namumark(conn, name, elsedata, 0, 0, 1)
@@ -2805,9 +2815,9 @@ def read_view(name = None, num = None, redirect = None):
         if(admin_memu == 1):
         if(admin_memu == 1):
             menu += [['acl/' + url_pas(name), 'ACL']]
             menu += [['acl/' + url_pas(name), 'ACL']]
 
 
-    if(redirect):
+    if(request.query.froms):
         menu += [['w/' + url_pas(name), '넘기기']]
         menu += [['w/' + url_pas(name), '넘기기']]
-        enddata = '<ul id="redirect"><li><a href="/w/' + url_pas(redirect) + '/from/' + url_pas(name) + '">' + redirect + '</a>에서 넘어 왔습니다.</li></ul><br>' + enddata
+        enddata = '<ul id="redirect"><li><a href="/w/' + url_pas(request.query.froms) + '?froms=' + url_pas(name) + '">' + request.query.froms + '</a>에서 넘어 왔습니다.</li></ul><br>' + enddata
 
 
     if(uppage != 0):
     if(uppage != 0):
         menu += [['w/' + url_pas(uppage), '상위']]
         menu += [['w/' + url_pas(uppage), '상위']]
@@ -2839,9 +2849,9 @@ def read_view(name = None, num = None, redirect = None):
         menu = menu
         menu = menu
     )))
     )))
 
 
-@route('/topic_record/<name:path>')
-@route('/topic_record/<name:path>/<num:int>')
-def user_topic_list(name = None, num = 1):
+@route('/topic_record/<name>')
+def user_topic_list(name = None):
+    num = int(request.query.num or 1)
     if(num * 50 > 0):
     if(num * 50 > 0):
         sql_num = num * 50 - 50
         sql_num = num * 50 - 50
     else:
     else:
@@ -2872,7 +2882,7 @@ def user_topic_list(name = None, num = 1):
         div += '<td>' + ip + ban +  '</td><td>' + data[4] + '</td></tr>'
         div += '<td>' + ip + ban +  '</td><td>' + data[4] + '</td></tr>'
 
 
     div += '</tbody></table>'
     div += '</tbody></table>'
-    div += next_fix('/topic_record/' + url_pas(name) + '/', num, data_list)
+    div += next_fix('/topic_record/' + url_pas(name) + '?num=', num, data_list)
                 
                 
     curs.execute("select end, why from ban where block = ?", [name])
     curs.execute("select end, why from ban where block = ?", [name])
     ban_it = curs.fetchall()
     ban_it = curs.fetchall()
@@ -2887,23 +2897,22 @@ def user_topic_list(name = None, num = 1):
         menu = [['other', '기타'], ['user', '사용자'], ['count/' + url_pas(name), '횟수'], ['record/' + url_pas(name), '편집 기록']]
         menu = [['other', '기타'], ['user', '사용자'], ['count/' + url_pas(name), '횟수'], ['record/' + url_pas(name), '편집 기록']]
     )))
     )))
 
 
-@route('/<tool:re:history|record>/<name:path>', method=['POST', 'GET'])
-@route('/<tool:re:history>/<name:path>/num/<num:int>', method=['POST', 'GET'])
-@route('/<tool:re:record>/<name:path>/<what:path>')
-@route('/<tool:re:record>/<name:path>/<what:path>/<num:int>')
 @route('/recent_changes')
 @route('/recent_changes')
-@route('/recent_changes/<what:path>')
-def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
+@route('/<tool:re:record>/<name>')
+@route('/<tool:re:history>/<name:path>', method=['POST', 'GET'])
+def recent_changes(name = None, tool = 'record'):
     if(request.method == 'POST'):
     if(request.method == 'POST'):
-        return(redirect('/w/' + url_pas(name) + '/r/' + request.forms.b + '/diff/' + request.forms.a))
+        return(redirect('/diff/' + url_pas(name) + '?first=' + request.forms.b + '&second=' + request.forms.a))
     else:
     else:
         one_admin = admin_check(conn, 1, None)
         one_admin = admin_check(conn, 1, None)
         six_admin = admin_check(conn, 6, None)
         six_admin = admin_check(conn, 6, None)
         ban = ''
         ban = ''
         select = ''
         select = ''
+        what = request.query.what or 'all'
         div = '<table style="width: 100%; text-align: center;"><tbody><tr>'
         div = '<table style="width: 100%; text-align: center;"><tbody><tr>'
         
         
         if(name):
         if(name):
+            num = int(request.query.num or 1)
             if(num * 50 > 0):
             if(num * 50 > 0):
                 sql_num = num * 50 - 50
                 sql_num = num * 50 - 50
             else:
             else:
@@ -2917,9 +2926,9 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
                 div += '<td style="width: 33.3%;">문서명</td><td style="width: 33.3%;">편집자</td><td style="width: 33.3%;">시간</td></tr>'
                 div += '<td style="width: 33.3%;">문서명</td><td style="width: 33.3%;">편집자</td><td style="width: 33.3%;">시간</td></tr>'
 
 
                 if(what == 'all'):
                 if(what == 'all'):
-                    div = '<a href="/record/' + url_pas(name) + '/revert">(되돌리기)</a><hr>' + div
-                    div = '<a href="/record/' + url_pas(name) + '/move">(이동)</a> ' + div
-                    div = '<a href="/record/' + url_pas(name) + '/delete">(삭제)</a> ' + div
+                    div = '<a href="/record/' + url_pas(name) + '?what=revert">(되돌리기)</a><hr>' + div
+                    div = '<a href="/record/' + url_pas(name) + '?what=move">(이동)</a> ' + div
+                    div = '<a href="/record/' + url_pas(name) + '?what=delete">(삭제)</a> ' + div
                 
                 
                     curs.execute("select id, title, date, ip, send, leng from history where ip = ? order by date desc limit ?, '50'", [name, str(sql_num)])
                     curs.execute("select id, title, date, ip, send, leng from history where ip = ? order by date desc limit ?, '50'", [name, str(sql_num)])
                 else:
                 else:
@@ -2937,9 +2946,9 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
             div += '<td style="width: 33.3%;">문서명</td><td style="width: 33.3%;">편집자</td><td style="width: 33.3%;">시간</td></tr>'
             div += '<td style="width: 33.3%;">문서명</td><td style="width: 33.3%;">편집자</td><td style="width: 33.3%;">시간</td></tr>'
 
 
             if(what == 'all'):
             if(what == 'all'):
-                div = '<a href="/recent_changes/revert">(되돌리기)</a><hr>' + div
-                div = '<a href="/recent_changes/move">(이동)</a> ' + div
-                div = '<a href="/recent_changes/delete">(삭제)</a> ' + div
+                div = '<a href="/recent_changes?what=revert">(되돌리기)</a><hr>' + div
+                div = '<a href="/recent_changes?what=move">(이동)</a> ' + div
+                div = '<a href="/recent_changes?what=delete">(삭제)</a> ' + div
 
 
                 curs.execute("select id, title, date, ip, send, leng from history order by date desc limit 50")
                 curs.execute("select id, title, date, ip, send, leng from history order by date desc limit 50")
             else:
             else:
@@ -2981,7 +2990,7 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
             if((int(data[0]) - 1) == 0):
             if((int(data[0]) - 1) == 0):
                 revert = ''
                 revert = ''
             else:
             else:
-                revert = '<a href="/w/' + url_pas(data[1]) + '/r/' + str(int(data[0]) - 1) + '/diff/' + data[0] + '">(비교)</a> <a href="/revert/' + url_pas(data[1]) + '/r/' + str(int(data[0]) - 1) + '">(되돌리기)</a>'
+                revert = '<a href="/diff/' + url_pas(data[1]) + '?first=' + str(int(data[0]) - 1) + '&second=' + data[0] + '">(비교)</a> <a href="/revert/' + url_pas(data[1]) + '?num=' + str(int(data[0]) - 1) + '">(되돌리기)</a>'
             
             
             style = ['', '']
             style = ['', '']
             date = data[2]
             date = data[2]
@@ -2990,7 +2999,7 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
             hide = curs.fetchall()
             hide = curs.fetchall()
             if(six_admin == 1):
             if(six_admin == 1):
                 if(hide):                            
                 if(hide):                            
-                    hidden = ' <a href="/history/' + url_pas(data[1]) + '/r/' + data[0] + '/hidden">(공개)'
+                    hidden = ' <a href="/hidden/' + url_pas(data[1]) + '?num=' + data[0] + '">(공개)'
                     
                     
                     style[0] = 'background: gainsboro;'
                     style[0] = 'background: gainsboro;'
                     style[1] = 'background: gainsboro;'
                     style[1] = 'background: gainsboro;'
@@ -3000,7 +3009,7 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
                     else:
                     else:
                         send += ' (숨김)'
                         send += ' (숨김)'
                 else:
                 else:
-                    hidden = ' <a href="/history/' + url_pas(data[1]) + '/r/' + data[0] + '/hidden">(숨김)'
+                    hidden = ' <a href="/hidden/' + url_pas(data[1]) + '?num=' + data[0] + '">(숨김)'
             elif(not hide):
             elif(not hide):
                 hidden = ''
                 hidden = ''
             else:
             else:
@@ -3014,7 +3023,7 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
                 style[1] = 'background: gainsboro;'
                 style[1] = 'background: gainsboro;'
 
 
             if(tool == 'history'):
             if(tool == 'history'):
-                title = '<a href="/w/' + url_pas(name) + '/r/' + data[0] + '">' + data[0] + '판</a> <a href="/raw/' + url_pas(name) + '/r/' + data[0] + '">(원본)</a> '
+                title = '<a href="/w/' + url_pas(name) + '?num=' + data[0] + '">' + data[0] + '판</a> <a href="/raw/' + url_pas(name) + '?num=' + data[0] + '">(원본)</a> '
             else:
             else:
                 title = '<a href="/w/' + url_pas(data[1]) + '">' + html.escape(data[1]) + '</a> <a href="/history/' + url_pas(data[1]) + '">(' + data[0] + '판)</a> '
                 title = '<a href="/w/' + url_pas(data[1]) + '">' + html.escape(data[1]) + '</a> <a href="/history/' + url_pas(data[1]) + '">(' + data[0] + '판)</a> '
                     
                     
@@ -3031,7 +3040,7 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
                 sub += ' (역사)'
                 sub += ' (역사)'
                 menu = [['w/' + url_pas(name), '문서'], ['move_data/' + url_pas(name), '이동 기록']]
                 menu = [['w/' + url_pas(name), '문서'], ['move_data/' + url_pas(name), '이동 기록']]
                 
                 
-                div += next_fix('/history/' + url_pas(name) + '/num/', num, data_list)
+                div += next_fix('/history/' + url_pas(name) + '?num=', num, data_list)
             else:
             else:
                 curs.execute("select end, why from ban where block = ?", [name])
                 curs.execute("select end, why from ban where block = ?", [name])
                 ban_it = curs.fetchall()
                 ban_it = curs.fetchall()
@@ -3040,7 +3049,7 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
 
 
                 title = '편집 기록'
                 title = '편집 기록'
                 menu = [['other', '기타'], ['user', '사용자'], ['count/' + url_pas(name), '횟수'], ['topic_record/' + url_pas(name), '토론 기록']]
                 menu = [['other', '기타'], ['user', '사용자'], ['count/' + url_pas(name), '횟수'], ['topic_record/' + url_pas(name), '토론 기록']]
-                div += next_fix('/record/' + url_pas(name) + '/' + url_pas(what) + '/', num, data_list)
+                div += next_fix('/record/' + url_pas(name) + '/' + url_pas(what) + '?num=', num, data_list)
 
 
                 if(what != 'all'):
                 if(what != 'all'):
                     menu += [['record/' + url_pas(name), '일반']]
                     menu += [['record/' + url_pas(name), '일반']]
@@ -3222,7 +3231,7 @@ def watch_list():
         menu = [['manager', '관리자']]
         menu = [['manager', '관리자']]
     )))
     )))
 
 
-@route('/watch_list/<name:path>')
+@route('/watch_list/<name>')
 def watch_list(name = None):
 def watch_list(name = None):
     ip = ip_check()
     ip = ip_check()
     if(re.search('\.|:', ip)):
     if(re.search('\.|:', ip)):
@@ -3307,7 +3316,7 @@ def custom_head_view():
         )))
         )))
 
 
 @route('/count')
 @route('/count')
-@route('/count/<name:path>')
+@route('/count/<name>')
 def count_edit(name = None):
 def count_edit(name = None):
     if(name == None):
     if(name == None):
         that = ip_check()
         that = ip_check()

+ 1 - 1
set_mark/redirect_pas.py

@@ -19,6 +19,6 @@ def redirect_pas(data, title, backlink):
             
             
         a = href.replace('&#x27;', "'").replace('&quot;', '"').replace('\\\\', '<slash>').replace('\\', '').replace('<slash>', '\\')
         a = href.replace('&#x27;', "'").replace('&quot;', '"').replace('\\\\', '<slash>').replace('\\', '').replace('<slash>', '\\')
         backlink += [[title, a, 'redirect']]
         backlink += [[title, a, 'redirect']]
-        data = re.sub('\r\n#(?:redirect|넘겨주기) ((?:(?!\r|\n|%0D).)+)', '<meta http-equiv="refresh" content="0;url=/w/' + url_pas(a) + '/from/' + url_pas(title) + sh + '" />', data, 1)
+        data = re.sub('\r\n#(?:redirect|넘겨주기) ((?:(?!\r|\n|%0D).)+)', '<meta http-equiv="refresh" content="0;url=/w/' + url_pas(a) + '?froms=' + url_pas(title) + sh + '" />', data, 1)
         
         
     return([data, backlink])
     return([data, backlink])

+ 1 - 1
set_mark/toc_pas.py

@@ -68,7 +68,7 @@ def toc_pas(data, title, num, toc_y):
 
 
             edit_d = ''
             edit_d = ''
             if(toc_y == 1):
             if(toc_y == 1):
-                edit_d = ' <span style="font-size: 12px;"><a href="/edit/' + url_pas(title) + '/section/' + str(i[0]) + '">(편집)</a></span>'
+                edit_d = ' <span style="font-size: 12px;"><a href="/edit/' + url_pas(title) + '?section=' + str(i[0]) + '">(편집)</a></span>'
 
 
             data = re.sub('(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n', '<tablenobr><h' + str(wiki) + ' id="' + c + '" ' + margin + '><a href="#toc" id="s-' + toc + '">' \
             data = re.sub('(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n', '<tablenobr><h' + str(wiki) + ' id="' + c + '" ' + margin + '><a href="#toc" id="s-' + toc + '">' \
                                                                          + toc + '.<span style="margin-left: 5px;"></span></a> ' \
                                                                          + toc + '.<span style="margin-left: 5px;"></span></a> ' \