[bug]1.0正式版端口转发问题
[bug]1.0正式版端口转发问题
环境是 LLMP,内网端口80被占用了,因此用的8080做的内网web端口。为保证外网正确访问,做了8080到80端口的转发。0.9版的时候一切都没有问题。1.0版就出现问题了。访问网站时会自动加上8080端口,手动删除端口号能正常访问,但网站内所有链接都自动加上了端口号。无法正常访问。
Re: [bug]1.0正式版端口转发问题
阿里云ACE公测,把博客搬上来了。
大概流程:
上传文件,修改数据库配置文件,导入数据库,成功访问~
不过还是有些小问题的。
==============问题1:无法登录后台======================
症状:
登录后台后还是显示登录页面。
原因:
Typecho1.0有个安全模块。根据提交的地址生成TOKEN。但是获取的时候出了点问题,ACE默认好象不是80端口,导致获取到的URL类似http://www.xxx.com:/....导致生成的TOKEN不一致。
解决办法:
修改 /var/Typecho/Request.php 文件 222 行:
. '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']);
//. (in_array($_SERVER['SERVER_PORT'], array(80, 443)) ? '' : ':' . $_SERVER['SERVER_PORT']);
注释223行。在222行结尾添加 ;
===========问题2:官方的ACE伪静态有问题,页面文件无法访问=======
症状:
http://www.xx.com/abc.html格式的地址显示404错误
原因:
ACE的伪静态规则,貌似对.html文件没有效果,要单独写一条正对HTML文件的。
解决方法:
用下面的伪静态规则(app.yaml):
tryuri:
- path: /
script: /index.php
rewrite:
- url: ^/index.php/(.*)$
script: /index.php?$1
- url: ^/(.+\.html)$
script: /index.php?$1 last
#配置完以后。记得重启应用(阿里云后台重启)~
#这个伪静态也不是太完美,好象页面文件不能评论- -先这样吧,以后在研究,初步线索是伪静态的锅
解决方法2:
或者不用.html后缀,但是页面文件还是无法评论- -囧~
评论可以了~
无法评论是我的页面静态地址有问题:/page/{slug}/
这样写就好了:/{slug}/
=======吐槽
__________________
阿里百秀Alibaixiu主题 v5.6 For Typecho http://xiu.160.me/
-
- 帖子: 1
- 注册时间: 2015年 10月 15日 17:53
Re: [bug]1.0正式版端口转发问题
编辑 /var/www/html/var/Typecho/Request.php 223行
222 . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])
223 . (in_array($_SERVER['SERVER_PORT'], array(80, 443, 要过滤的端口)) ? '' : ':' . $_SERVER['SERVER_PORT']);
例如转发的端口是8080 (8080→80)作如下修改:
222 . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])
223 . (in_array($_SERVER['SERVER_PORT'], array(80, 443, 8080)) ? '' : ':' . $_SERVER['SERVER_PORT']);
222 . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])
223 . (in_array($_SERVER['SERVER_PORT'], array(80, 443, 要过滤的端口)) ? '' : ':' . $_SERVER['SERVER_PORT']);
例如转发的端口是8080 (8080→80)作如下修改:
222 . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])
223 . (in_array($_SERVER['SERVER_PORT'], array(80, 443, 8080)) ? '' : ':' . $_SERVER['SERVER_PORT']);