我有一個帶有如下 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?)