2016-11-28 149 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文件不存在,如果請求直接。

您將需要啓用適當的代理模塊。