2016-11-28 128 views
3

我正在将站点从IIS 7移动到Apache 2.4,并且具有以下web.config重写规则我遇到了问题转换为.htaccess。该规则基本上允许通过重写所有没有带.cfm扩展名的扩展名的文件(例如,www.mydomain/bag在服务器上重写为www.mydomain.com/bag.cfm)来清理(seo友好)url。web中的工作规则的.config如下所示转换web.config重写规则为htaccess重写规则(所有文件没有扩展名将被处理为.cfm)

<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(阿帕奇2.4)运行Lucee 5.0,如果该事项。任何指导,将不胜感激

+1

您应该可以自定义此答案,以使用.cfm而不是.html: http://stackoverflow.com/questions/5745490/rewrite-rule-to-add-html-extension – Jordan

+0

谢谢,是的我曾经尝试过,没有运气。我认为这可能与在Apache之后通过tomcat代理的“.cfm”文件有关。当我使用链接时,你建议我打开日志时看起来会变得很近,我会看到以下内容。 'strip per-dir prefix:/home/domain/public_html/bag.cfm - > bag.cfm 将模式'^(。*)$'应用于uri'bag.cfm' 传递给/ home/domain/public_html /bag.cfm 谈判:找到匹配请求的文件:/ home/domain/public_html/bag(无法协商)。' –

+0

到达htaccess的时候, .cfm转换为.cfm。 –

回答

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文件不存在,如果请求直接。

您将需要启用适当的代理模块。