我遇到问题与mod_rewrite一起给我带来同样的错误404如下:
RewriteRule ^music.mp3?id=(.*)$ music.php?id= [L]
我需要url /music.mp3?id=1和真实网址/music.php?id=1
任何想法?
我认为路径RewriteRule
中有些东西被误解了答案 0 :(得分:2)
您无法与RewriteRule
中的查询字符串(网址中的?之后的所有内容)进行匹配。但无论如何你都不是真正匹配它,看起来你只需要附加到目标URI,所以:
RewriteRule ^music\.mp3$ music.php [L]
应该足够好。任何查询字符串参数(如?id=1
)都会自动附加到最后。
答案 1 :(得分:0)
在你的表达式(引擎规则)中,你想说的是:
“当网址以music.mp3?id=
开头时,请抓取=
之后的内容并将网址更改为music.php?id=
并将部分放在id=
之后
在正则表达式中,.
字符具有特殊含义。如果你想说“点字符”,而不是给它特殊的含义,你需要逃避它,但在它后面放一个\
,如下:
^music\.mp3?id=(.*)$
@Jon Lin已经给了你另一部分,这是关于查询字符串的。