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]
答案 0 :(得分:1)
您的替换目标music/artist_page.php
也与^music/(.*)$
匹配,因此您获得了递归。第一个规则中的第一个条件避免了该规则,因为它排除了任何可以映射到现有文件的请求。