Iva*_*van 2 apache mod-rewrite port
我注意到当使用mod_rewrite时,即使apache在端口8080上,PHP也会返回server_port 80.
即我有这个网址:http://myvirtualhost.8080/index.php和这个PHP片段:
<?php echo $_SERVER['SERVER_PORT']; ?>
Run Code Online (Sandbox Code Playgroud)
在.htaccess中我有这个简单的规则
RewriteEngine on
RewriteRule ^/?$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)
使用mod_rewrite时,输出为"80"(错误)
关闭mod_rewrite,输出为"8080"(正确)
这是正常的吗?这个简单的解决方案?事实是我需要检查REAL服务器端口以在条件PHP脚本中使用,例如:
<?php
if ($_SERVER['SERVER_PORT'] == 80) {
do something
} else {
do something else
}
?>
Run Code Online (Sandbox Code Playgroud)
当然这实际上是不可能的,因为SERVER_PORT上的mod_rewrite总是80.我不想乱用.htaccess文件,所以PHP脚本解决方案会很棒......
提前致谢!
小智 5
你需要设置"UseCanonicalPhysicalPort"
UseCanonicalPhysicalPort on
Run Code Online (Sandbox Code Playgroud)
这将确保重写规则将使用与请求相同的端口重写URL.