/ / Apache mod_rewrite змінює вихідний порт сервера REAL у сценарії PHP - apache, mod-rewrite, port

Apache mod_rewrite змінює вихідний порт сервера REAL у скрипті PHP - apache, mod-rewrite, port

Я помітив, що при використанні mod_rewrite PHP повертає server_port 80, навіть якщо apache знаходиться на порту 8080.

я маю цю URL-адресу: http://myvirtualhost.8080/index.php і цей фрагмент PHP:

<?php echo $_SERVER["SERVER_PORT"]; ?>

У .htaccess у мене це просте правило

RewriteEngine on
RewriteRule     ^/?$            index.php           [NC,L]

Якщо увімкнено mod_rewrite, вихід "80" (неправильно)

Якщо вимкнено mod_rewrite, вихід "8080" (правильний)

Це нормально? Непрості рішення для цього? Справа в тому, що мені потрібно перевірити реальний порт сервера, щоб використовувати його в умовному сценарії PHP, щось на кшталт:

<?php
if ($_SERVER["SERVER_PORT"] == 80) {
do something
} else {
do something else
}
?>

і звичайно це насправді неможливо, оскільки з mod_rewrite на SERVER_PORT завжди 80. Я вважаю за краще не возитися з файлом .htaccess, тому рішення сценарію PHP було б чудово ...

Спасибі заздалегідь!

Відповіді:

5 за відповідь № 1

Вам потрібно встановити "UseCanonicalPhysicalPort"

UseCanonicalPhysicalPort on

це забезпечить, що правило перезапису буде переписати URL з тим самим портом, що і запит.


1 для відповіді № 2

Ви також можете переписати порт сервера, додавши двокрапку та номер порту або змінну SERVER_PORT: www.example.com:%{SERVER_PORT}. Перевірте документацію apache.