对于以某些字符开头的网址,需要mod_rewrite异常

时间:2014-03-18 14:29:20

标签: php regex apache .htaccess mod-rewrite

我对mod_rewrite了解不多,但似乎无法找到这个问题的答案。我正在开发一个简单的应用程序,并通过主index.php页面路由所有网址(少数除外)。所以例如mysite.com/test转到index.php,然后在php中确定url是什么并加载适当的页面。

我的问题是我需要排除此规则中的电子邮件验证或其他潜在的未来例外情况。电子邮件验证链接的示例是:http://myrul.com/php-login-advanced/register.php?id=2&verification_code= .....等

所以...有没有办法从以某些字符开头的重写规则中排除网址。 " PHP - "在这种情况下会做到这一点。

我目前的重写条件是:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|&|register\.php|php|
css|images|javascript|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ index.php?/$1 [L]

2 个答案:

答案 0 :(得分:0)

尝试使用查询字符串

RewriteCond %{QUERY_STRING}     ^query=(.*)$    [NC]

答案 1 :(得分:0)

您可以使用RewriteCond %{REQUEST_URI}排除特定的URI,如下所示:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/php- [NC]
RewriteCond $1 !^(index\.php|register\.php|php|css|images|javascript|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]