Configuration Apache (VirtualHost)

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName www.mon-site.com
    DocumentRoot /data/www/site
    
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    
    <Directory /data/www/site>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        
        <IfModule mod_headers.c>
            Header set X-UA-Compatible "IE=Edge,chrome=1"
            # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
            <FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|xpi|safariextz|vcf)$" >
              Header unset X-UA-Compatible
            </FilesMatch>
        </IfModule>        

        # ----------------------------------------------------------------------
        # Cross-domain AJAX requests
        # ----------------------------------------------------------------------

        # Serve cross-domain ajax requests, disabled.   
        # enable-cors.org
        # code.google.com/p/html5security/wiki/CrossOriginRequestSecurity

        #  <IfModule mod_headers.c>
        #    Header set Access-Control-Allow-Origin "*"
        #  </IfModule>

        # ----------------------------------------------------------------------
        # Gzip compression
        # ----------------------------------------------------------------------

        <IfModule mod_deflate.c>

        # Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
        <IfModule mod_setenvif.c>
          <IfModule mod_headers.c>
            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
          </IfModule>
        </IfModule>

        # HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
        <IfModule filter_module>
            FilterDeclare   COMPRESS
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/html
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/css
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/plain
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/xml
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/x-component
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/javascript
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/json
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xml
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xhtml+xml
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/rss+xml
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/atom+xml
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/vnd.ms-fontobject
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $image/svg+xml
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/x-font-ttf
            FilterProvider  COMPRESS  DEFLATE resp=Content-Type $font/opentype
            FilterChain     COMPRESS
            FilterProtocol  COMPRESS  DEFLATE change=yes;byteranges=no
        </IfModule>

        <IfModule !mod_filter.c>
            # Legacy versions of Apache
            AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
            AddOutputFilterByType DEFLATE application/javascript
            AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
            AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
            AddOutputFilterByType DEFLATE image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
        </IfModule>
        </IfModule>        

        # ----------------------------------------------------------------------
        # Expires headers (for better cache control)
        # ----------------------------------------------------------------------

        # These are pretty far-future expires headers.
        # They assume you control versioning with cachebusting query params like
        #   <script src="application.js?20100608">
        # Additionally, consider that outdated proxies may miscache 
        #   www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

        # If you don't use filenames to version, lower the CSS  and JS to something like
        #   "access plus 1 week" or so.

        <IfModule mod_expires.c>
          ExpiresActive on

        # Perhaps better to whitelist expires rules? Perhaps.
          ExpiresDefault                          "access plus 1 month"

        # cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
          ExpiresByType text/cache-manifest       "access plus 0 seconds"

        # Your document html 
          ExpiresByType text/html                 "access plus 0 seconds"
          
        # Data
          ExpiresByType text/xml                  "access plus 0 seconds"
          ExpiresByType application/xml           "access plus 0 seconds"
          ExpiresByType application/json          "access plus 0 seconds"

        # Feed
          ExpiresByType application/rss+xml       "access plus 1 hour"
          ExpiresByType application/atom+xml      "access plus 1 hour"

        # Favicon (cannot be renamed)
          ExpiresByType image/x-icon              "access plus 1 week" 

        # Media: images, video, audio
          ExpiresByType image/gif                 "access plus 1 month"
          ExpiresByType image/png                 "access plus 1 month"
          ExpiresByType image/jpg                 "access plus 1 month"
          ExpiresByType image/jpeg                "access plus 1 month"
          ExpiresByType video/ogg                 "access plus 1 month"
          ExpiresByType audio/ogg                 "access plus 1 month"
          ExpiresByType video/mp4                 "access plus 1 month"
          ExpiresByType video/webm                "access plus 1 month"
          
        # HTC files  (css3pie)
          ExpiresByType text/x-component          "access plus 1 month"
          
        # Webfonts
          ExpiresByType font/truetype             "access plus 1 month"
          ExpiresByType font/opentype             "access plus 1 month"
          ExpiresByType application/x-font-woff   "access plus 1 month"
          ExpiresByType image/svg+xml             "access plus 1 month"
          ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
            
        # CSS and JavaScript
          ExpiresByType text/css                  "access plus 1 year"
          ExpiresByType application/javascript    "access plus 1 year"
          
          <IfModule mod_headers.c>
            Header append Cache-Control "public"
          </IfModule>
          
        </IfModule>

        # ----------------------------------------------------------------------
        # ETag removal
        # ----------------------------------------------------------------------

        # FileETag None is not enough for every server.
        <IfModule mod_headers.c>
          Header unset ETag
        </IfModule>

        # Since we're sending far-future expires, we don't need ETags for
        # static content.
        #   developer.yahoo.com/performance/rules.html#etags
        FileETag None    

        # ----------------------------------------------------------------------
        # Start rewrite engine
        # ----------------------------------------------------------------------

        # Turning on the rewrite engine is necessary for the following rules and features.
        # FollowSymLinks must be enabled for this to work.

        <IfModule mod_rewrite.c>
            Options +FollowSymlinks
            RewriteEngine On
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} !-s 
            RewriteCond %{REQUEST_FILENAME} !-l 
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule ^(.*)$ index.php [NC,L]
        </IfModule>        

        # ----------------------------------------------------------------------
        # UTF-8 encoding
        # ----------------------------------------------------------------------

        # Use UTF-8 encoding for anything served text/plain or text/html
        AddDefaultCharset utf-8

        # Force UTF-8 for a number of file formats
        AddCharset utf-8 .html .css .js .xml .json .rss .atom
    </Directory>
    
    <Location />
  
    </Location>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine On

</VirtualHost>

 

Tags