如何使用 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?)

相關內容