如何配置Apache让viewforum.php带参请求返回静态文件而非执行PHP?
解决方案
你之前的配置仅关闭了PHP解析,但Apache默认会将URL中?后的内容作为独立的查询参数处理,不会将其作为文件名的一部分匹配你归档生成的静态文件(wget会自动将带查询参数的URL保存为文件名包含?的静态文件,比如viewforum.php?f=2&start=25就是实际存在的静态文件名)。
按照以下步骤配置即可解决:
- 首先确保Apache已经启用
mod_rewrite模块,可检查Apache主配置中是否有LoadModule rewrite_module modules/mod_rewrite.so配置项,且未被注释。 - 在论坛归档根目录的
.htaccess文件中写入以下配置:
# 关闭PHP解析 RemoveHandler .php .phtml .php3 RemoveType .php .phtml .php3 php_flag engine off # 强制所有.php后缀文件按HTML格式返回 AddType text/html .php # 开启重写引擎 RewriteEngine On # 处理带查询参数的请求:将查询参数拼接到文件名后匹配静态文件 # 注意:如果你的论坛放在站点根目录而非/forum子目录,把下面配置里的/forum删掉即可 RewriteCond %{QUERY_STRING} .+ RewriteCond %{DOCUMENT_ROOT}/forum/%{REQUEST_URI}\?%{QUERY_STRING} -f RewriteRule ^ %{REQUEST_URI}\?%{QUERY_STRING} [L]
- 重启Apache后即可生效。
内容的提问来源于stack exchange,提问作者Basj
相关产品推荐
相关产品推荐

