я заметил, что при использовании mod_rewrite, PHP возвращает server_port 80, даже если апач на порт 8080.Apache mod_rewrite изменяет выходной порт реального сервера в PHP скрипт
т.е. у меня есть этот 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-скриптов будет отличным ...
Заранее благодарим!
Я бы очень хотел, чтобы избежать жесткого кода имя сервера ... есть ли решение, которое не связано с этим? До сих пор я нашел решение на форуме SitePoint: http://www.sitepoint.com/forums/showthread.php?t=518318 – Ivan
Ответ в том же абзаце документации apache: используйте '% {HTTP_HOST}'. – weltraumpirat