.htaccess rewriterule重定向到子文件夹中的页面,只要真实页面不存在

时间:2010-01-20 22:30:42

标签: .htaccess mod-rewrite

FTR,这绝对是程序员的缺点。问题是,我有一个简短的网址重写,工作正常。我可以做www.mysite.com/matt,它会点击我查询结果的php页面。但我需要的是做mysite.com/music/matt

当我对根目录使用与子目录相同的规则时,它会抛出500错误,并尝试重定向我的mysite.com/music/index.php这两个都是一个大问题。

这是我在root上运行正常的东西(即mysite.com/matt按预期重定向):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /music/artist_page.php?n=$1 [L,QSA]

如果我尝试以下操作,我会收到内部500错误,它似乎吃掉任何现有文件。

RewriteRule ^music/(.*)$ /music/artist_page.php?n=$1 [L,QSA]

1 个答案:

答案 0 :(得分:1)

您的替换目标music/artist_page.php也与^music/(.*)$匹配,因此您获得了递归。第一个规则中的第一个条件避免了该规则,因为它排除了任何可以映射到现有文件的请求。