能否通过.htaccess重写页面中的锚点链接?
核心结论
直接用.htaccess做不到你要的效果——.htaccess里的mod_rewrite只管URL请求的路由(比如让用户访问page1.html时实际加载对应的page1.php),但没法修改PHP输出到浏览器的HTML内容里的链接地址。
可行的实现方案
- 直接改PHP源码:把PHP文件里的
<a href="https://www.example.com/page1.php">直接改成<a href="https://www.example.com/page1.html">,这是最省心的方式。 - PHP输出缓冲替换:如果没法直接改源码,可以在PHP文件开头加一段代码,用输出缓冲过滤输出内容:
ob_start(function($content) { // 把所有.php"替换成.html" return str_replace('.php"', '.html"', $content); }); - Apache服务器用mod_substitute模块:如果你的服务器是Apache且启用了
mod_substitute,可以在.htaccess里加规则,在服务器发送HTML给浏览器前替换链接:AddOutputFilterByType SUBSTITUTE text/html Substitute "s/\.php\"/.html\"/ni"
内容的提问来源于stack exchange,提问作者Macky McCormack
相关产品推荐
相关产品推荐

