我需要将特定格式的所有网址重写为匹配的查询字符串网址,其他所有网址都应该转到index.php?valid = false
我有:
RewriteRule (^[^\s]{4})/([0-9]{4})/(winter|fall|summer)/([0-9]{4})/?$ index.php?valid=true&subject=$1&course=$2&semester=$3&year=$4 [NC,L]
RewriteRule (.*)/?$ index.php?valid=false [NC,L]
第一条规则是正常工作:4个字母,4个数字,秋天或冬天或夏天,4个数字。似乎第二条规则正在运行,因为当前所有内容都已重定向到?valid=false
页面。但是,即使它们应该被[L]
标志停止,即使第一个规则接受的URL(当第二个规则被注释掉时)也会传递给第二个规则的URL?
我做错了吗?
谢谢!
答案 0 :(得分:0)
用以下代码替换您的代码:
RewriteRule (^[^\s]{4})/([0-9]{4})/(winter|fall|summer)/([0-9]{4})/?$ index.php?valid=true&subject=$1&course=$2&semester=$3&year=$4 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)/?$ index.php?valid=false [NC,L]
即。仅当URI尚未index.php