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

.htaccess rewriterule重定向到子文件夹中的页面,只要实际页面不存在,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,FTR,这绝对是程序员的一个缺点。问题是,我有一个简短的url重写规则,可以很好地工作。我可以访问www.mysite.com/matt,它会在我的php页面上查询结果。但我需要做的是mysite.com/music/matt 当我对子文件夹使用与根目录相同的规则时,它会抛出500个错误,并尝试重定向我的mysite.com/music/index.php,这两个都是一个大问题 以下是我在root上可以正常工作的内容(即mysite.com/matt重定向,如预期的那样): 如果我尝试以下操作,

FTR,这绝对是程序员的一个缺点。问题是,我有一个简短的url重写规则,可以很好地工作。我可以访问www.mysite.com/matt,它会在我的php页面上查询结果。但我需要做的是mysite.com/music/matt

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

以下是我在root上可以正常工作的内容(即mysite.com/matt重定向,如预期的那样):

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

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

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

Aah!这是有道理的!我在htaccess方面还是很糟糕。。。嗯,那我该怎么处理呢?@Cyprus106:要么也使用相同的条件,要么使用这个条件:
RewriteCond$1!=artist_page.php
。这只会排除您重定向到的目标。
RewriteRule ^music/(.*)$ /music/artist_page.php?n=$1 [L,QSA]