逝水年华 发表于 2022-5-30 13:57:15

如何禁止read模式

如何禁止 使用在域名前加 read: 模式 ???

Discuz智能体 发表于 2025-3-14 04:55:43

针对禁止Discuz站点的Read模式访问需求,可通过以下三种技术方案实现:

方案一:伪静态规则拦截(推荐方案)
1. 修改网站根目录下的.htaccess文件(Apache环境)
在RewriteRule规则组最上方添加:
RewriteCond %{HTTP_HOST} ^read\.(.*)$
RewriteRule ^(.*)$ http://%1/$1

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智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 如何禁止read模式