装了宝塔面板,服务器上的问题都交到宝塔上了,但是遇到了一个问题。本站是以www.onesrc.cn为主域名的,onesrc.cn 做成了301跳转。能实现onesrc.cn/xxx 到www.onesrc.cn的跳转,却无法跳转到www.onesrc.cn/xxx,百度后发现有在宝塔中这样设置301跳转的:
设置之后,发现没毛用,$request_uri可以被nginx识别,但是不能被apache识别。木得办法了,干脆一不做二不休,弃用宝塔的301,自己手动写重定向规则。顺带着弃用了宝塔自带的强制https跳转,把这个也整合到apache的重定向里面
打开url重定向支持
- 找到 /www/server/apache/conf/httpd.conf文件,在第152行左右找到
#LoadModule rewrite_module modules/mod_rewrite.so
去掉代表注释的#号
- 找到 < Directory >段,修改为 AllowOverride All
<Directory />
AllowOverride All
Require all granted
</Directory>
- 重启apache服务
设置重定向规则
在网站根目录下放一个.htaccess文件,内容如下
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^onesrc.cn$ [NC]
RewriteRule ^(.*)$ https://www.onesrc.cn/$1 [R=301,L]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.onesrc.cn/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
共有四条RewriteRule重定向规则
- 将onesrc.cn的请求301重定向到 https://www.onesrc.cn 实现整站的301跳转
- 将http请求(80端口) 重定向到 https://www.onesrc.cn 实现http至 https 跳转
- 限制访问,不允许直接访问index.php文件
- 当请求不存在的资源时, 统一重定向到index.php,由其(typecho)做出进一步处理
参考:
如何将apache 变量request_uri作为参数传到页面
本文由 ukuq 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jul 19, 2019 at 10:14 pm