天天看點

Apache htaccess Minify 正式環境不通路的重寫規則

Google Project Minfiy 放到網站根目錄 /min/ 下。

如果是正式環境(判斷條件,域名HTTP_HOST中存在 . 點号就判斷為正式上線環境),那麼 不将網站中的CSS JS重寫到min/index.php

如果是測試環境(判斷條件,域名HTTP_HOST中不存在.,或者192.168. 開頭或者其他特例,存在.的特例),那麼網站中的CSS/JS 的真實檔案全部重寫。

且限定重寫的CSS JS 僅僅是/public /Public /css /js 檔案夾中的CSS/JS!

實作代碼:htaccess ,僅僅支援Apache伺服器:

#如果正式環境,不重寫到壓縮
RewriteCond %{HTTP_HOST} !\. [NC]
RewriteCond %{REQUEST_FILENAME} (\.(js|css))$ [NC]
RewriteRule ^((css|js|public)\/.*\.(css|js))$ min/index.php?f=$1 [L,NE,NC]

#正式環境,通路 /min 目錄跳轉
RewriteCond %{HTTP_HOST} \. [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(min\/.*)$  /?=$1 [L,R=301]      

如果存在問題,或者有更好的建議,歡迎交流。by [email protected]

——————————————— 附加 ———————————————————

修改 /min/.htaccess 檔案,如果是正式環境,禁止任何通路!

<IfModule mod_rewrite.c>
RewriteEngine on

# You may need RewriteBase on some servers
#RewriteBase /min

#正式環境,禁止通路 min檔案夾任何内容!
  RewriteCond %{HTTP_HOST} \. [NC]
  RewriteRule ^(.*)$ /?f=$1 [L,R=301]

# rewrite URLs like "/min/f=..." to "/min/?f=..."
RewriteRule ^([bfg]=.*)  index.php?$1 [L,NE]
</IfModule>
<IfModule mod_env.c>
# In case AddOutputFilterByType has been added
SetEnv no-gzip
</IfModule>