Apache mod_rewrite изменяет вывод РЕАЛЬНОГО порта сервера в сценарии PHP - PullRequest
2 голосов
/ 02 января 2011

Я заметил, что при использовании 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 ...

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 05 июня 2012

Вам необходимо установить «UseCanonicalPhysicalPort»

UseCanonicalPhysicalPort on

, чтобы правило перезаписи переписывало URL с тем же портом, что и запрос.

1 голос
/ 02 января 2011

Также можно переписать порт сервера, добавив двоеточие и номер порта или переменную SERVER_PORT: www.example.com:%{SERVER_PORT}.Проверьте документацию apache .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...