除了我在htaccess中的第一条规则外,我怎样才能重写所有内容?

时间:2013-08-02 14:40:12

标签: regex apache .htaccess url-rewriting httpd.conf

我需要将特定格式的所有网址重写为匹配的查询字符串网址,其他所有网址都应该转到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?

我做错了吗?

谢谢!

1 个答案:

答案 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

时才执行第二条规则