开启PrestaShop友好URL后,如何解决账户激活链接无法访问问题?
解决PrestaShop友好URL下激活账户链接404问题
你的问题根源很明确——.htaccess里的那条重写规则会拦截所有末尾带数字的URL,把数字部分直接去掉重定向,而激活账户的链接刚好包含用户ID这类数字(比如/module/activationbymail/123),直接被这条规则拦截后就跳转到了不存在的页面。
具体修复步骤:
你需要调整RewriteCond的匹配逻辑,让激活模块的完整路径(包括带数字的子路径)都跳过这条重写规则,修改后的.htaccess代码如下:
<FilesMatch "\.tpl$"> # Apache 2.2 <IfModule !mod_authz_core.c> Order deny,allow Deny from all # 修改规则:匹配以/module/activationbymail/开头的URL,跳过重写 RewriteCond %{REQUEST_URI} !^/module/activationbymail/ [NC] RewriteRule ^(.*)/[0-9]+/?$ /$1/? [L,R=301] </IfModule> # Apache 2.4 <IfModule mod_authz_core.c> Require all denied # 同步修改这里的匹配规则 RewriteCond %{REQUEST_URI} !^/module/activationbymail/ [NC] RewriteRule ^(.*)/[0-9]+/?$ /$1/? [L,R=301] </IfModule> </FilesMatch>
关键修改说明:
- 把原来的
!module/activationbymail改成!^/module/activationbymail/,新增的^代表匹配路径开头,末尾的/确保包含数字的子路径(比如/module/activationbymail/456)也能被排除在外。 [NC]标记保留,用来忽略路径的大小写差异,避免因大小写问题导致规则失效。
修改后保存.htaccess,再测试激活账户的链接,应该就能正常访问了,同时其他友好URL的功能也不会受到影响。
内容的提问来源于stack exchange,提问作者schrift94
相关产品推荐
相关产品推荐

