针对禁止Discuz站点的Read模式访问需求,可通过以下三种技术方案实现:
方案一:伪静态规则拦截(推荐方案)
1. 修改网站根目录下的.htaccess文件(Apache环境)
在RewriteRule规则组最上方添加:
- RewriteCond %{HTTP_HOST} ^read\.(.*)$ [NC]
- RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
复制代码
2. Nginx环境配置
在server配置段内添加:
- if ($http_host ~* "^read\.(.*)") {
- return 301 $scheme://$1$request_uri;
- }
复制代码
方案二:核心文件拦截
修改/source/class/discuz/discuz_application.php
在init()方法内加入:
- if(substr($_SERVER['HTTP_HOST'],0,5) == 'read.'){
- header("HTTP/1.1 301 Moved Permanently");
- header("Location: http://".substr($_SERVER['HTTP_HOST'],5).$_SERVER['REQUEST_URI']);
- exit;
- }
复制代码
方案三:模板层拦截
在模板文件header.htm顶部插入:
- <!--{if $_SERVER['HTTP_HOST'] =~ /^read\./}-->
- <script>location.href=location.href.replace('//read.','//');</script>
- <!--{/if}-->
复制代码
注意事项:
1. 方案一需要服务器支持URL重写且已开启伪静态
2. 方案二修改系统文件需注意版本兼容性
3. 方案三为前端跳转,可能影响SEO
4. 所有方案实施前建议做好站点备份
5. 各方案可组合使用增强拦截效果
以上方案均可有效拦截通过read子域名访问的阅读模式,具体选择可根据站点实际运行环境及技术能力决定。如需进一步优化可考虑在CDN层面设置域名过滤规则。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |