代码之家  ›  专栏  ›  技术社区  ›  alex

为什么这个.htaccess会跳过我的rewritebase?

  •  1
  • alex  · 技术社区  · 16 年前

    这是我的.htaccess的开头

       # invoke rewrite engine
            RewriteEngine On
            RewriteBase /~new
    
    
        # force non domain.com to www.domain.com
    
        RewriteCond %{HTTP_HOST} !^www\.
        RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L,NC]
    

    每次我请求 http://www.example.com/~new/whatever 我被派去 http://www.example.com/whatever . 我把括号放在1美元左右 http://www.example.com/[whatever] .

    为什么它会去掉我的rewritebase var?

    或者,有没有一种方法可以在.htaccess中设置一个环境变量,我可以将rewritebase设置为该变量,并将其放在$1前面,以使重定向工作正常?

    2 回复  |  直到 16 年前
        1
  •  3
  •   chaos    16 年前

    好吧,这就是rewritebase的工作原理:它会从您的请求中清除所有主要路径信息,然后重新插入rewritebase。但在您的示例中,它不能执行重新插入,因为您要将其重定向到完全限定的URL。

    我认为你应该备份并准确定义你想做的事情,并可能就此提出一个新的问题,而不是假设RewriteBase是你需要使用的,并专注于“为什么RewriteBase不做我想做的”。RewriteBase可能与此无关。

        2
  •  0
  •   Tobias    16 年前

    在文件开头这样做,稍后设置重写基

    RewriteCond %{HTTP_HOST} ^webmaster-eye\.de$
    RewriteRule ^(.*)$ http://www.webmaster-eye.de/$1 [L,R=301]
    
    推荐文章