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