【问题标题】:Apache RewriteRule flags proxy NSApache RewriteRule 标记代理 NS
【发布时间】:2012-12-15 19:52:48
【问题描述】:

我正在尝试编写以下规则(参见 cmets)

# Redirect example.org/sub/* to sub.example.org/* explicitly
RewriteCond %{REQUEST_URI} ^/sub(.+)$ [NC]
RewriteRule ^ http://sub.%{HTTP_HOST}%1 [L,R=301,NS]

# Redirect sub.example.org/* to example.org/sub/* internally
RewriteCond %{HTTP_HOST} ^sub\.(.+)$ [NC]
RewriteRule ^ http://%1/sub%{REQUEST_URI} [L,P,NS]

即使有 NS 标志,当我点击 sub.example.org/foo 时,我得到的重定向太多,这里是 RewriteLog

applying pattern '^' to uri 'foo'
rewrite 'foo' -> 'http://example.org/sub/foo'
escaped URI in per-dir context for proxy, http://example.org/sub/foo -> http://example.org/sub/foo
forcing proxy-throughput with http://example.org/sub/foo
go-ahead with proxy request proxy:http://example.org/sub/foo [OK]

applying pattern '^' to uri 'sub/foo'
rewrite 'sub/foo' -> 'http://sub.example.org/foo'
explicitly forcing redirect with http://sub.example.org/foo
escaping http://sub.example.org/foo for redirect
redirect to http://sub.example.org/foo [REDIRECT/301]

开着就开着

【问题讨论】:

    标签: apache mod-rewrite url-rewriting rewrite mod-proxy


    【解决方案1】:
    # Redirect example.org/sub/* to sub.example.org/* explicitly
    RewriteCond %{REQUEST_URI} ^/sub(.+)$ [NC]
    RewriteRule ^ http://sub.%{HTTP_HOST}%1 [L,R=301]
    
    # Redirect sub.example.org/* to example.org/sub/* internally
    RewriteCond %{HTTP_HOST} ^sub\.(.+)$ [NC]
    RewriteRule - http://%1/sub%{REQUEST_URI} [L,P]
    

    没有 NS 标志,只是破折号...... doh

    【讨论】:

      猜你喜欢
      • 2017-04-09
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 2021-07-26
      • 2016-02-07
      • 1970-01-01
      相关资源
      最近更新 更多