我正在将一个站点从IIS 7移动到Apache 2.4并具有以下web.config重写规则我无法转换为.htaccess。该规则基本上允许干净(seo友好)URL通过重写所有文件而没有扩展名为.cfm的扩展名(例如www.mydomain / bag在服务器上重写为www.mydomain.com/bag.cfm。网络中的工作规则.config如下所示
<rule name="Rewrite all non extension requests to .cfm" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}.cfm" matchType="IsFile" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="{R:1}.cfm" />
</rule>
我已经尝试了我在这里找到的所有类似帖子,不幸的是,这些帖子都没有为我工作。如果重要的话,我在CentOS 7(Apache 2.4)上运行Lucee 5.0。任何指导都将不胜感激。
答案 0 :(得分:0)
我不太了解Tomcat;我假设您需要Apache,因为Tomcat对于提供非脚本内容没有好处。
您可以对它们进行设置,使它们都具有相同的文档根目录,从而具有一致的URL,但是Tomcat在另一个端口上侦听,而不是在外部打开该端口。然后,您可以代理(隐藏)cfm
文件的请求,如下所示:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.cfm -f
RewriteCond %{THE_REQUEST} ^\S++\s++([^?\s]++)(\?\S*)?
RewriteRule ^ http://127.0.0.1:8080%1.cfm%2 [NS,NE,P]
RewriteRule (?<=.cfm)$ http://127.0.0.1:8080/404.cfm [NS,NE,P]
第二个规则是假如直接请求cfm文件不存在的示例。
您需要启用相应的代理模块。