У меня есть страница с таким 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?)