如何从htaccess正则表达式中省略匹配

时间:2011-03-07 20:03:43

标签: regex .htaccess mod-rewrite

RewriteEngine On
RewriteBase /
RewriteRule ^sample-([a-z][a-z]).php /state.php?m=$1
RewriteRule ^sample-([a-z^-]+).php /city.php?m=$1

我的htaccess文件中有两个正则表达式,用于查找状态(两个字母字符,例如“sample-tx.php”)和city(字母字符和破折号的任意总和,例如“sample-new” -bedford.php“)。

这些表达现在很有用,但我需要帮助两件事:

  1. 对于状态表达式,我如何省略“az”和“tx”,所以当有人去“sample-az.php”或“sample-tx.php”时,它们不会被重定向?

  2. 与#1相同的问题,除了这个城市的时间。我怎么会省略“休斯顿”和“新贝德福德”,所以当有人去“sample-houston.php”或“sample-new-bedford.php”时,他们没有被重定向?

1 个答案:

答案 0 :(得分:0)

您可以使用(?!...) negative assertions

RewriteRule ^sample-(?!az|tx)([a-z][a-z]).php /state.php?m=$1

在字符匹配组之前立即写入它们。它对城市来说也是一样的。