.htaccess配置URL伪静态重写后返回HTTP ERROR 500求助
修正后的完整.htaccess规则
RewriteEngine On # HTTP、不带www域名统一跳转至https://www域名 RewriteCond %{HTTP_HOST} ^everyoneknows\.com\.my [NC,OR] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.everyoneknows.com.my/$1 [R=301,L] # 原带参地址301跳转至路径格式地址 RewriteCond %{THE_REQUEST} \s/customer/?\?loc=(\S+)\s [NC] RewriteRule ^ /customer/%1? [R=301,L] # 路径格式地址内部重写到实际PHP处理地址 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^customer/(.*)/?$ /customer/index.php?loc=$1 [QSA,NC,L]
主要修改点说明
- 删除了重复的域名跳转规则,修正了原第一条规则里的域名拼写错误(少写了末尾的s)
- 将内部重写的参数名从
parameter改为程序实际接收的loc,和原带参地址的参数名保持一致 - 补全了内部重写的
index.php路径,如果是根目录的index.php处理业务,把路径改为/index.php?loc=$1即可
前置验证项
如果配置后仍然返回500错误,请检查两项配置:
- 服务器已开启
mod_rewrite扩展 - 站点Apache配置中对应站点的
<Directory>段里已配置AllowOverride All,否则.htaccess规则不会被加载
配置完成后清理浏览器缓存再测试,访问https://www.everyoneknows.com.my/customer/dashboard即可正常加载内容,原带参地址也会自动跳转至新的路径格式地址。
内容的提问来源于stack exchange,提问作者David Holly
相关产品推荐
相关产品推荐

