我试图在htaccess文件中使用mod_rewrite保护mp3。
我阅读了以下主题:
how to write a .htaccess redirect like stackoverflow does for its questions
htaccess rewrite dynamic mp3 to dynamic php?
How to hide filename from url by using .htaccess
此网站:
https://code.tutsplus.com/tutorials/using-htaccess-files-for-pretty-urls--net-6049
和此视频:
https://www.youtube.com/watch?v=uPlZekNEU60
我可以使用以下规则将文件名重写为filename.pdf:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.pdf -f
RewriteRule ^([^\.]+)$ $1.pdf [NC,L]
现在,为了保护我的mp3,我想重写我的网址
filename.mp3 /?uuid = https://cdn.com/123456/t/filename.mp3的东西
我尝试了以下规则:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.mp3 -f
RewriteRule ^([a-zA-Z0-9]{30})$ https://cdn.com/123456/t/$1.mp3 [NC,L]
但这不起作用
我尝试了这个:
RewriteRule ^(\w*.mp3)+)$ https://cdn.com/123456/t/$1 [NC,L]
但是它使网站瘫痪:(
有什么建议吗?
答案 0 :(得分:0)
您最后一个RewriteRule
的结尾处有一个右括号,并且会重复匹配mp3 1次或更多次。
如果您删除括号并留下^(\w*.mp3)+
,它仍将重复一次或多次匹配该模式\w*.mp3
的分组结构。这将匹配单词字符0+次,后跟点和mp3
引起的任何字符。
例如可以匹配zmp3
。如果要匹配文字点,则必须对其进行转义。
我认为您的意思是:
RewriteRule ^(\w+\.mp3/)$ https://cdn.com/123456/t/$1 [NC,L]
您可能会检查查询字符串是否包含单个键/值对:
RewriteCond %{QUERY_STRING} ^uuid=\w+$ [NC]