如果找不到wav文件,如何将htaccess中的wav重定向到mp3?

时间:2019-04-09 07:14:15

标签: apache .htaccess

Web服务器的根目录是音频文件。文件可以是wav或mp3格式。我正在尝试重定向到具有相同名称但具有不同扩展名的文件。例如,如果没有名称为hello.wav的文件,则重定向到hello.mp3。我的尝试是以关于html和php的一个答案为例的。请纠正我!

服务器版本:Apache / 2.4.25(Debian 9.8)

我的.htaccess:

Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.wav$ $1.mp3 [L]

例如,如果没有名称为hello.wav的文件,则重定向到hello.mp3。在浏览器中,我正在写http://domain.kz/hello.wav,应该得到http://domain.kz/hello.mp3

2 个答案:

答案 0 :(得分:0)

我犯了一个简单的错误,就是没有完全检查Web服务器的所有设置。我打开了模块“ rewrite”和“ userdir”

sudo a2enmod rewrite
sudo a2enmod userdir

并编辑了/ var / www /

的AllowOverride
<Directory /var/www/>
   Options Indexes FollowSymLinks
   AllowOverride **All**
   Require all granted
</Directory>

然后重新启动apache

systemctl restart apache2

答案 1 :(得分:0)

我不知道您的问题是否解决,但是我找到了一条可以帮助您的线索。 https://httpd.apache.org/docs/2.4/en/rewrite/flags.html#flag_s

# Does the file exist?
RewriteCond "%{REQUEST_FILENAME}" "!-f"
RewriteCond "%{REQUEST_FILENAME}" "!-d"
# Create an if-then-else construct by skipping 3 lines if we meant to go to the "else" stanza.
RewriteRule ".?" "-" [S=3]

# IF the file exists, then:
    RewriteRule "(.*\.gif)" "images.php?$1"
    RewriteRule "(.*\.html)" "docs.php?$1"
    # Skip past the "else" stanza.
    RewriteRule ".?" "-" [S=1]
# ELSE...
    RewriteRule "(.*)" "404.php?file=$1"
# END