如何使用.htaccess重写mp3文件名

时间:2019-02-09 13:42:47

标签: regex apache pcre

我试图在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]

但是它使网站瘫痪:(

有什么建议吗?

1 个答案:

答案 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]