Я помітив, що при використанні 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.