AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 875521
Accepted
Thomas
Thomas
Asked: 2017-09-27 01:16:49 +0800 CST2017-09-27 01:16:49 +0800 CST 2017-09-27 01:16:49 +0800 CST

mod_rewrite 从 http 端口 XXXX 到 https 端口 XXXX

  • 772

我无法使用以下规则使 mod_rewrite 工作。

RewriteCond "%{SERVER_NAME}" "home.myhome.net"
RewriteCond "%{SERVER_PORT}" "^4388$"
RewriteRule (.*) https://home.myhome.net:4389%{REQUEST_URI} [QSA,R=301,L]

此规则在我的 http 虚拟主机部分设置。问题是,重定向只在第一次起作用。第二次在 http 端口4388上输入不同的 URL 时,我被重定向到https://home.myhome.net:438 8 /...

例如:

  • 首先我输入http://home.myhome.net:4388/pageA我被重定向到https://home.myhome.net:4389/pageA
  • 下次我输入http://home.myhome.net:4388/pageB并被重定向到 http s ://home.myhome.net:438 8 /pageB

任何想法如何解决?

我的操作系统详细信息:

root@host:~# dpkg -l|grep apache
ii  apache2                                     2.4.18-2ubuntu3.5                            amd64        Apache HTTP Server
ii  apache2-bin                                 2.4.18-2ubuntu3.5                            amd64        Apache HTTP Server (modules and other binary files)
ii  apache2-data                                2.4.18-2ubuntu3.5                            all          Apache HTTP Server (common files)
ii  apache2-utils                               2.4.18-2ubuntu3.5                            amd64        Apache HTTP Server (utility programs for web servers)
ii  python-certbot-apache                       0.17.0-1+ubuntu16.04.1+certbot+1             all          Apache plugin for Certbot
root@host:~# lsb_release -d
Description:    Ubuntu 16.04.3 LTS

那是我的虚拟主机配置,它有所不同,因为我进行了更多测试,但行为相同。我也放弃了测试所有其他重写规则,结果相同(以及我在评论中所说的,对于我刷新浏览器缓存的每个测试)。

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond "%{SERVER_NAME}" "home.myhome.net"
        RewriteCond "%{SERVER_PORT}" "^4388$"
        RewriteRule ^ https://%{SERVER_NAME}:4389%{REQUEST_URI} [noescape,qsappend,redirect=301,last]
    </IfModule>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

哦,我忘了说,这台服务器位于 NAT 网关后面,它执行从外部端口 4388 到内部主机端口 80 以及外部端口 4389 到内部端口 443 的端口转发。这就是为什么我需要检查端口和主机名仅匹配外部流量。

编辑:好的,我找到了一些东西,但也没有解决方案:我将第一个和以下浏览器请求/响应与浏览器开发人员工具-> 网络选项卡进行了比较:

第一个请求给了我“ 301 Moved Permanently ”,但下面的请求给了我一个“ 307 Internal Redirect ”。

所以这似乎是一个服务器问题。问题只是,如果它是 mod_rewrite 中的错误还是我的错,因为规则不正确。

编辑:我现在也使用来自Ondřej Surý 的 Apache PPA的当前 apache 版本 2.4.27-5.1+ubuntu16.04.1+deb.sury.org+1 进行了测试

问候,托马斯

mod-rewrite
  • 1 1 个回答
  • 3153 Views

1 个回答

  • Voted
  1. Best Answer
    Thomas
    2017-09-27T13:26:31+08:002017-09-27T13:26:31+08:00

    好的,经过长时间的搜索,我终于找到了原因。我在我的 https 网站上设置了 HTTP Strict-Transport-Security (HSTS),这就是为什么浏览器不会再次启动以在该 url 上打开 http 网站并强制使用 https 协议的原因。

    给定的例子都是有效的。

    • 1

相关问题

  • 在 mod_rewrite 重写条件下设置 Apache 环境变量

  • .htaccess 不工作(mod_rewrite)

  • 在 CentOS + Apache 中启用漂亮的网址/永久链接

  • Apache 重写规则 - 删除 URL 中的“/”

  • mod_rewrite 不转发 GET 参数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve