多种条件下的奇怪行为

时间:2014-10-26 12:55:01

标签: .htaccess mod-rewrite url-rewriting

我有以下规则:

RewriteCond %{REQUEST_URI} !script.php
RewriteCond %{QUERY_STRING} url=(.*)
RewriteRule .* script.php?q=%1

RewriteCond %{REQUEST_URI} !script.php
RewriteRule (.*) script.php?q=$1

我在这里要完成的是,对http://example.com/?url=www.google.com的每次访问都会重定向到script.php?q=www.google.com,如果没有查询字符串,则应将相对路径发送到script.phphttp://example.com/path中的示例应重定向到script.php?q=path。这似乎不符合我的规则,但我不确定为什么。这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

您可以遵守以下规则:

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^url=([^&]+) [NC]
RewriteRule ^/?$ script.php?q=%1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.+)$ script.php?q=$1 [L,QSA]