如何使用 htaccess 重写屏蔽不同端口上的 URL

如何使用 htaccess 重写屏蔽不同端口上的 URL

我有一个带有如下 URL 的页面:

https://example.com:3000/newsite

但我希望能够从这里访问它:

https://example.com/newsite

并屏蔽 URL,这样它就会始终显示最后一个之前的所有内容/

我尝试过这样的:

RewriteRule ^:3000/newsite/?$ /site/

但它不起作用。为什么?

我的整体.htaccess看起来像这样,因为我已经有一些其他必须保持不变的规则:

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(jpeg|jpg|gif|png)$ /public/404.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]           <---everything up to this point has to stay the same

RewriteRule ^:3000/newchat/?$ /chat/
</IfModule>

答案1

RewriteRule ^:3000/newsite/?$ /site/

您不能简单地以这种方式(使用内部重写)从请求的 URL 中“删除”端口号。

按照您的要求去做需要您配置一个反向代理(这可能需要更改服务器配置),但您仍然需要实际更改您网站上的 URL 以从所有内部链接中删除端口号。

但是,为了配置反向代理(从端口 443(HTTPS)到网站实际运行的端口 3000),您需要将服务器配置为打开并接受对端口 443 的请求(以及将端口 80(HTTP)重定向到端口 443(HTTPS))。

但是如果你有权访问可以配置上述所有内容的服务器,那么为什么不直接在标准端口(即 443)上提供内容呢?(这引出了一个问题,为什么一开始使用端口 3000?)

相关内容