PrestaShop 1.7自动删除.htaccess中Facebook令牌相关代码求助
我使用PrestaShop 1.7版本,系统会不定期自动删除.htaccess文件中去除Facebook fbclid令牌的代码段。当前我的.htaccess内容如下:
# ~~start~~ # .htaccess automaticaly generated by PrestaShop e-commerce open-source solution # http://www.prestashop.com - http://www.prestashop.com/forums <IfModule mod_rewrite.c> <IfModule mod_env.c> SetEnv HTTP_MOD_REWRITE On </IfModule> RewriteEngine on #Domain: mydomain.cz RewriteRule . - [E=REWRITEBASE:/] RewriteRule ^api$ api/ [L] # Strip Facebook spyware tokens RewriteCond %{REQUEST_METHOD} =GET [NC,OR] RewriteCond %{REQUEST_METHOD} =HEAD [NC] RewriteCond %{QUERY_STRING} ^(.*)&?fbclid=[^&]+$ [NC] RewriteRule ^/?(.*)$ /$1?%1 [NE,L,R=301,E=limitcache:1] Header always set Cache-Control "max-age=604800" env=limitcache RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
解决思路及方法
PrestaShop会在执行更新、保存SEO/URL设置、生成URL重写规则等操作时,自动重新生成.htaccess文件,覆盖用户自定义的修改。针对这个问题,有以下几种可行方案:
修改.htaccess生成模板
找到PrestaShop根目录下的config/htaccess.txt文件,这是系统生成.htaccess的模板。在文件中合适的位置(比如RewriteEngine on之后、API规则之前)添加你需要保留的Facebook令牌处理代码,保存模板。之后系统每次自动生成.htaccess时,都会包含这段自定义代码。禁用自动生成.htaccess功能
进入后台“首选项 > SEO与URL”设置页面,取消勾选“自动生成.htaccess文件”选项。之后.htaccess文件不会被系统自动覆盖,但需要注意:后续如果新增URL重写规则、修改域名等操作,需要手动更新.htaccess文件,避免出现链接失效问题。使用独立的自定义规则文件
在网站根目录创建一个自定义规则文件(比如custom_htaccess_rules.conf),将Facebook令牌处理代码写入该文件。然后在主.htaccess文件中添加一行指令引入这个文件:Include custom_htaccess_rules.conf注意:需要确保服务器的Apache配置允许使用
Include指令(需开启mod_include模块)。如果主.htaccess仍会被覆盖,也需要把这行Include指令添加到config/htaccess.txt模板中。
内容的提问来源于stack exchange,提问作者Jirka de Lucina

