我正在尝试为.htaccess编写重写规则。我认为我已经很接近了,但是我改变了一件事,然后又搞砸了其他事情。我对.htaccess或regex不太了解,可以使用一些帮助。
这是我需要的逻辑。
我从开始:
RewriteEngine on
我有一个带子文件夹的文件夹。 1)我需要文件夹和子文件夹为403,所以我做到了,它起作用了:
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [R=403]
到目前为止很好。
2)在子文件夹中,有图像,同一图像的大小不同,但是还不存在。 我有一个image.original.png文件。
如果直接请求此文件,但该文件不存在,则需要显示404。所以我这样做了:
RewriteCond %{REQUEST_FILENAME} ^(.*)\.original\.png$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ - [R=404]
这似乎也很好。 这是我卡住的部分。
如果直接请求image.original.png文件并且它确实存在,我想显示另一个文件,即image.png。如果image.png不存在,它将被重定向到index.php,它将生成image.png,将其保存以供进一步使用并显示。
因此,重点是,用户永远不会看到image.original.png
然后是最后一部分。 image.png有几种变体,可能是image.280.png image.420.png image.660.png image.880.png,您明白了。
当请求这些变体中的任何一个时,如果它们存在,则应为它们服务。
如果不这样做,则应检查image.original.png,如果不存在,则应显示404。
如果存在image.original.png,则应转到index.php,将在其中生成image.requestedvariation.png,保存以备将来使用并提供服务。
这是我到目前为止所得到的...
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [R=403]
RewriteCond %{REQUEST_FILENAME} ^(.*)\.original\.png$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ - [R=404]
RewriteCond %{REQUEST_FILENAME} ^(.*)\.original\.png$
RewriteRule ^(.*)\.original\.png$ ./$1.png
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(.*)\.png$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} ^(.*)\.(.+)\.png$
RewriteRule ^(.*)\.(.+)\.png$ ./$1.original.png
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
在那混乱的某个时刻,我迷路了。
请帮助! :D 预先感谢!
答案 0 :(得分:0)
看来我终于可以正常工作了! :D
下面是代码:(我在index.php中添加了一堆变量用于调试,但我想它们并不是必需的)
#!/usr/bin/env python3
from termcolor import colored
import time
from termcolor import cprint
import hashlib
max_digest = bytes(0)
max_num = 0
def main():
global max_digest
global max_num
for num in range(100000):
digest = hashlib.md5(int.to_bytes(num, 8, 'little')).digest()
if int.from_bytes(digest, 'little') > int.from_bytes(max_digest, 'little'):
max_digest = digest
max_num = num
beautify_print_try(num)
time.sleep(0.1)
def beautify_print_try(num):
print("\033c")
cprint('Best: ' + str(max_num) + ' (' + max_digest.hex() + ')', 'green', attrs=['bold'])
cprint('[*] Try: ' + str(num), 'red', attrs=['bold'])
if __name__ == '__main__':
main()