【问题标题】:How to rewrite mp3 filename using .htaccess如何使用 .htaccess 重写 mp3 文件名
【发布时间】:2019-07-03 13:04:38
【问题描述】:

我试图在我的 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=something to 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]

但它会使网站关闭:(

有什么建议吗?

【问题讨论】:

  • 我的回答对你有用吗?
  • 感谢您的回答,这个周末我会尝试您的解决方案,我会及时通知您! :)

标签: regex apache pcre


【解决方案1】:

您最后一个 RewriteRule 末尾的右括号过多,并且会重复匹配 mp3 1 次或更多次。

如果您删除该括号而留下^(\w*.mp3)+,它仍将重复一次或多次与此模式\w*.mp3 匹配的分组结构。由于点和mp3,这将匹配0+次单词字符后跟任何字符。

例如可以匹配zmp3。如果要匹配文字点,则必须对其进行转义。

我认为你的意思是:

RewriteRule ^(\w+\.mp3/)$ https://cdn.com/123456/t/$1 [NC,L]

您可以检查查询字符串是否由单个键/值对组成:

RewriteCond %{QUERY_STRING} ^uuid=\w+$ [NC]

【讨论】:

  • 我试过了,但它不起作用RewriteRule ^(\w*.mp3)+)$ https://cdn.com/123456/t/$1 [NC,L]当我点击mp3的链接时,它没有被重写:(
  • @PonzioPilato 您尝试的与RewriteRule ^(\w+\.mp3/)$ https://cdn.com/123456/t/$1 [NC,L] 略有不同@您尝试了吗?
猜你喜欢
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多