2012-04-10 54 views
2

我目前正在Google App Engine中開發一個網站作爲網站開發平臺,但我最終希望構建能夠將網站從動態模板編譯爲靜態HTML/CSS-only版。.htaccess按文件類型重定向正則表達式

就URL映射而言,所有站點文件都存在於站點根目錄中,但我仍然希望能夠將特定文件類型映射到文件夾。

例如:

  • /圖片 - 包含所有圖像
  • /腳本 - 包含了所有的JavaScript文件
  • /樣式 - 包含了所有的樣式

眼下,GAE我用以下靜態路由路由這些路由:

url: /(.*\.(gif|png|jpg)) 
    static_files: /images/\1 

url: /(.*\.css) 
    static_files: /stylesheets/\1 

url: /(.*\.js) 
    static_files: /scripts/\1 

如何使用包含正則表達式重寫規則的.htaccess文件在站點根目錄映射這些靜態路由?

+0

我對GAE並不熟悉,不太明白你想要在這裏達到什麼目的。你能提供一些「真實」的例子,說明需要做什麼(從url - >到url)。我想我有一個想法,你在這裏做什麼,但我需要澄清。 (P.S.實際的重寫規則應該很簡單) – LazyOne 2012-04-10 10:54:04

+0

@LazyOne這個想法是,如果你把site.com/image.jpg,它會映射到site.com/images/image.jpg。對於樣式表,一個例子是site.com/main.css - > site.com/stylesheets/main.css。總體思路是儘可能簡化資產URL,而不會犧牲在後端組織文件的能力。最終,我將有一個文件夾site.com/html,它將包含整個網站的靜態HTML/CSS頁面,但我仍在處理該部分。 – 2012-04-10 17:23:25

回答

2

您可以使用此配置的.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 

RewriteRule ^(.*\.(gif|png|jpg))$ /images/$1 
RewriteRule ^(.*\.css)$ /stylesheets/$1 
RewriteRule ^(.*\.js)$ /scripts/$1 

2號線 - 5只,如果你想apache的不重寫,如果文件/鏈接/目錄確實存在。

+0

太棒了。我特別喜歡第2-5行的添加,即使我不需要它。我還沒有測試過,以確保這項工作,但我現在無論如何會給你信貸。謝謝。 – 2012-04-10 17:18:58

+0

你不必回答這個問題,但是,這個配置是否也可以用在httpd.conf中?我只在.htaccess文件中玩過重定向/重寫規則,如果Apache配置文件可以編輯,我想消除.htaccess文件(即速度/效率)。 – 2012-04-10 17:25:46

+0

我也只玩過.htaccess文件。但將它移動到httpd.conf應該沒有問題。只需將它包裝在一個''-tag中以指定它應用於哪個目錄。 – ANisus 2012-04-11 09:54:28

相關問題