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 が使用されていたのかという疑問が生じます)

関連情報