【问题标题】:Does redirecting www to https:// require AllowOverride or can it be set globally?将 www 重定向到 https:// 需要 AllowOverride 还是可以全局设置?
【发布时间】:2015-10-26 20:28:48
【问题描述】:

我正在尝试更改我确定不是最佳的 apache2 服务器配置。现在我将所有 AllowOverride 设置为 None。我想保留该配置以设置全局规则并增加页面加载时间。

但是,现在的问题是我使用单独的虚拟主机和目录以及 .php 文件将 www.example.com 重定向到 https://www.example.com。我确信这不是最优的。我更喜欢使用 mod_overwrite。

根据我的阅读,像下面这样的规则集可以实现这一点。但是,如果我想保留 AllowOverride None,我想知道在哪里放置此代码。

RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

我相信,如果我在正确的位置添加这样的规则集,我还可以禁用我用来重定向的附加虚拟主机。

【问题讨论】:

    标签: php apache .htaccess redirect


    【解决方案1】:

    你应该把重写规则放在一个

    <Directory /some/where>
    [...]
    </Directory>
    

    阻塞在 apache 配置中。因此,您不需要任何 .htaccess 文件,因此无需更改 AllowOverride。

    【讨论】:

    • 我最终将这些确切的代码行添加到虚拟主机中,该虚拟主机指向另一个目录,其中的 php 文件再次指向 https:// 。这解决了问题。
    • 您说要删除虚拟主机,所以我选择了&lt;Directory&gt; 标签。您不需要任何 php 文件(如果请求引用 / 或 /index.php 以外的任何内容,则不会被命中)或其他虚拟主机(端口 80 和 443 的一个/s 除外)。查阅apache文档,内容非常全面,条理清晰。
    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 2018-04-22
    • 2019-10-26
    • 2018-07-03
    相关资源
    最近更新 更多