.htaccess无限循环如何停止

时间:2011-11-22 18:53:58

标签: .htaccess apache2

我想要合并几个.htaccess规则。以下是我想要完成的要点:

  1. jethro.mysite.com - >重定向到 - > gallery.mysite.com/?username=jethro&page_name=Home (注意:如果尚未指定,则page_name为= Home)

  2. jethro.mysite.com/ajax/dir/script.php - >重定向到 - > gallery.mysite.com/ajax/dir/script.php

  3. 正常处理其他任何事情。示例:jethro.mysite.com/includes/blah.css - >重定向到 - > gallery.mysite.com/includes/blah.css

  4. 到目前为止,我位于jethro.mysite.com的.htaccess看起来像这样,但我得到一个无限循环:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^jethro.mysite.com [NC]
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule (.*) http://jethro.mysite.com/?username=jethro&page_name=Home [P]
    RewriteCond %{QUERY_STRING} page_name=script
    RewriteRule (.*) http://gallery.mysite.com/ajax/dir/script\.php [P]
    RewriteCond %{QUERY_STRING} page_name=(.*)
    RewriteRule (.*) http://gallery.mysite.com/?username=jethro&page_name=%1 [P]
    

    如果我禁用上面的第5行和第6行,它将不再执行循环。请帮助我如何结合这些想法?谢谢!

1 个答案:

答案 0 :(得分:0)

请尝试以下操作。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^jethro.mysite.com [NC]
RewriteCond %{QUERY_STRING} ^$
RewriteRule . http://jethro.mysite.com/?username=jethro&page_name=Home [P,L]


RewriteCond %{QUERY_STRING} page_name=script [NC]
RewriteRule . http://gallery.mysite.com/ajax/dir/script\.php [P,L]

RewriteCond %{QUERY_STRING} page_name=(.*) [NC]
RewriteCond %1 !=script            [NC]
RewriteRule . http://gallery.mysite.com/?username=jethro&page_name=%1 [P,L]

我还假设[p]是有意的,即你想代理请求。