다음과 같은 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(및 포트 443(HTTPS)으로 리디렉션하려면 포트 80(HTTP))에 대한 요청을 켜고 수락합니다.
그러나 위의 모든 항목을 구성할 서버에 액세스할 수 있다면 표준 포트(예: 443)에서 콘텐츠를 직접 제공하면 어떨까요? (왜 처음부터 포트 3000을 사용했습니까?)