【问题标题】:Why would this .htaccess be stripping out containing folder?为什么这个 .htaccess 会剥离包含文件夹?
【发布时间】:2010-10-17 00:52:43
【问题描述】:

这是来自位于 /~new/ 下的 .htaccess

# invoke rewrite engine
    RewriteEngine On

# force domain.com to www.domain.com

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$0 [R=301,L,NC]

访问http://domain.com/~new/hello时,正在重写为http://www.domain.com/hello

www. 按原样添加,但由于某种原因它忽略了 /~new/ 子目录。

有谁知道这可能是什么原因造成的?仅供参考,TLD 中有一个 .htaccess,但它是空的。我知道我可以将 /~new/ 添加到正则表达式替换字符串,但我更喜欢通用解决方案(为了可移植性),我不确定它为什么首先将其剥离。我也尝试过使用 RewriteBase,但无法让它工作。

谢谢

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    我认为通常 {REQUEST_URI} 会在您的重写规则中:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www..*
    RewriteCond %{HTTP_HOST} !^$
    RewriteCond %{HTTP_HOST} ^([^.]*).(com|com/)
    RewriteRule ^.*$ www.%1.%2%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 我必须在您的 RewriteRule 中的 www 之前插入 http:// 并且它起作用了!另外,由于我的网站位于澳大利亚域中,因此我将您的 (com|com/) 更改为 (com.au|com.au/)。谢谢!
    • 实际上,我最终将最后一部分更改为 ([a-z\.]{2,6}
    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2010-11-07
    • 2018-09-04
    • 2011-01-12
    • 2015-02-18
    相关资源
    最近更新 更多