Lucee本地安装后无法读取.htaccess,导致SES URL失效
核心原因:本地Lucee默认使用Tomcat作为Web服务器,而.htaccess是Apache的专属配置文件,Tomcat本身不支持解析它。以下是两种可行的解决方案:
方案一:使用Tomcat URL重写过滤器(无需额外安装服务器)
这是最简便的方式,通过Tuckey URLRewriteFilter实现类似Apache mod_rewrite的功能:
下载并部署URLRewriteFilter
- 下载适配Tomcat 9.x的URLRewriteFilter jar包(Lucee 5.4.x配套的Tomcat版本为9.x),将其放入
{Lucee安装目录}\tomcat\lib文件夹。
- 下载适配Tomcat 9.x的URLRewriteFilter jar包(Lucee 5.4.x配套的Tomcat版本为9.x),将其放入
配置Tomcat启用过滤器
打开{Lucee安装目录}\tomcat\conf\web.xml,在现有过滤器配置后添加以下代码:<filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>转换.htaccess规则为Tomcat兼容格式
在你的网站根目录(mywebsite文件夹)下创建urlrewrite.xml文件,写入对应规则:<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "https://cdn.jsdelivr.net/gh/paultuckey/urlrewritefilter@4.0.3/src/main/resources/dtds/urlrewrite4.0.dtd"> <urlrewrite> <rule> <from>^/mywebsite/([A-Za-z0-9-]+)/?$</from> <to type="forward">/mywebsite/index.cfm?do=$1</to> <set type="status">200</set> </rule> </urlrewrite>注意:规则中的
/mywebsite对应你本地访问的路径前缀,若后续配置了虚拟主机可去掉该前缀。重启Lucee服务
重启Tomcat服务(可通过Lucee控制面板操作),之后访问http://127.0.0.1:8888/mywebsite/profiles即可正常跳转。
方案二:切换为Apache作为Web服务器(保留.htaccess)
如果你想继续使用.htaccess,需要将Lucee与Apache配合使用:
安装并配置Apache
- 安装兼容的Apache版本,打开
httpd.conf启用mod_rewrite模块:去掉#LoadModule rewrite_module modules/mod_rewrite.so前的注释。 - 在Apache中配置虚拟主机,指向你的
mywebsite目录,并确保允许.htaccess生效:<VirtualHost *:80> ServerName mywebsite.local DocumentRoot "C:\路径\到\mywebsite" <Directory "C:\路径\到\mywebsite"> AllowOverride All Require all granted </Directory> </VirtualHost>
- 安装兼容的Apache版本,打开
配置Lucee与Apache的连接器
在Lucee安装目录中找到mod_cfml相关配置,或通过Lucee控制面板配置Apache连接器,让Apache将CFML请求转发给Lucee的Tomcat服务器。修改本地hosts文件
在C:\Windows\System32\drivers\etc\hosts中添加127.0.0.1 mywebsite.local,之后通过http://mywebsite.local/profiles访问即可。
内容的提问来源于stack exchange,提问作者Paolo Broccardo

