2014-10-26 3 views
2

У меня есть следующие правила:Weird поведения с несколькими условиями

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.php, например, в http://example.com/path, должно быть перенаправлено на script.php?q=path. Это, похоже, не работает с моими правилами, но я не уверен, почему. Возможно ли это?

ответ

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] 
+0

Спасибо, что работает по большей части, за исключением того, что относительный путь может содержать строку запроса, но только не «URL» в качестве строки запроса .. – Zed

+0

Вы забыли указать, что в вашем вопросе? Укажите примеры этих URL и как их следует переписать. – anubhava

+1

никогда не думал, я исправил это, спасибо за ваше время. – Zed