包含"#"的歌曲在尝试从我的网站下载时,在曲目标题中给出了404错误。如何解决这个问题?
这是我当前的.htaccess
代码:
RewriteRule ^download/([^/]*)-([^/]*).mp3$ download.php?download=$2&pl=$1
答案 0 :(得分:3)
#永远不会达到apache。它是一个跳转标记,#之后的网址中的所有内容都不会发送到网络服务器。 javascript:document.location.hash跳转到页面中的锚点。您可以使用%23转义#,即使没有htaccess也可以访问您的网络服务器。当您使用php时,您可以使用htmlentities($ filename)或urlencode($ filename)在输出期间修复它。
答案 1 :(得分:0)
默认情况下,
?
,#
等特殊字符将转换为其十六进制代码。使用[NE]
标志可以防止这种情况发生。
RewriteRule ^download/([^/]*)-([^/]*)\.mp3$ download.php?download=$2&pl=$1 [NE,QSA,NC,L]
以上示例将重定向/download-foo-bar.mp3
到download.php?download=bar&pl=bar#1
。省略[NE]
标记将导致#
被转换为十六进制代码%23
。,这将导致404未找到错误条件。
在RewriteRule
模式中,点(。)是一个特殊字符,它匹配任何字符。如果要匹配文字点(。),请使用反斜杠将其转义。