talasila | 4ad39a5 | 2017-02-07 15:03:57 -0500 | [diff] [blame] | 1 | # Apache Configuration File |
| 2 | |
| 3 | # (!) Using `.htaccess` files slows down Apache, therefore, if you have access |
| 4 | # to the main server config file (usually called `httpd.conf`), you should add |
| 5 | # this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html. |
| 6 | |
| 7 | # ############################################################################## |
| 8 | # # CROSS-ORIGIN RESOURCE SHARING (CORS) # |
| 9 | # ############################################################################## |
| 10 | |
| 11 | # ------------------------------------------------------------------------------ |
| 12 | # | Cross-domain AJAX requests | |
| 13 | # ------------------------------------------------------------------------------ |
| 14 | |
| 15 | # Enable cross-origin AJAX requests. |
| 16 | # http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity |
| 17 | # http://enable-cors.org/ |
| 18 | |
| 19 | # <IfModule mod_headers.c> |
| 20 | # Header set Access-Control-Allow-Origin "*" |
| 21 | # </IfModule> |
| 22 | |
| 23 | # ------------------------------------------------------------------------------ |
| 24 | # | CORS-enabled images | |
| 25 | # ------------------------------------------------------------------------------ |
| 26 | |
| 27 | # Send the CORS header for images when browsers request it. |
| 28 | # https://developer.mozilla.org/en/CORS_Enabled_Image |
| 29 | # http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html |
| 30 | # http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/ |
| 31 | |
| 32 | <IfModule mod_setenvif.c> |
| 33 | <IfModule mod_headers.c> |
| 34 | <FilesMatch "\.(gif|ico|jpe?g|png|svg|svgz|webp)$"> |
| 35 | SetEnvIf Origin ":" IS_CORS |
| 36 | Header set Access-Control-Allow-Origin "*" env=IS_CORS |
| 37 | </FilesMatch> |
| 38 | </IfModule> |
| 39 | </IfModule> |
| 40 | |
| 41 | # ------------------------------------------------------------------------------ |
| 42 | # | Web fonts access | |
| 43 | # ------------------------------------------------------------------------------ |
| 44 | |
| 45 | # Allow access from all domains for web fonts |
| 46 | |
| 47 | <IfModule mod_headers.c> |
| 48 | <FilesMatch "\.(eot|font.css|otf|ttc|ttf|woff)$"> |
| 49 | Header set Access-Control-Allow-Origin "*" |
| 50 | </FilesMatch> |
| 51 | </IfModule> |
| 52 | |
| 53 | |
| 54 | # ############################################################################## |
| 55 | # # ERRORS # |
| 56 | # ############################################################################## |
| 57 | |
| 58 | # ------------------------------------------------------------------------------ |
| 59 | # | 404 error prevention for non-existing redirected folders | |
| 60 | # ------------------------------------------------------------------------------ |
| 61 | |
| 62 | # Prevent Apache from returning a 404 error for a rewrite if a directory |
| 63 | # with the same name does not exist. |
| 64 | # http://httpd.apache.org/docs/current/content-negotiation.html#multiviews |
| 65 | # http://www.webmasterworld.com/apache/3808792.htm |
| 66 | |
| 67 | Options -MultiViews |
| 68 | |
| 69 | # ------------------------------------------------------------------------------ |
| 70 | # | Custom error messages / pages | |
| 71 | # ------------------------------------------------------------------------------ |
| 72 | |
| 73 | # You can customize what Apache returns to the client in case of an error (see |
| 74 | # http://httpd.apache.org/docs/current/mod/core.html#errordocument), e.g.: |
| 75 | |
| 76 | ErrorDocument 404 /404.html |
| 77 | |
| 78 | |
| 79 | # ############################################################################## |
| 80 | # # INTERNET EXPLORER # |
| 81 | # ############################################################################## |
| 82 | |
| 83 | # ------------------------------------------------------------------------------ |
| 84 | # | Better website experience | |
| 85 | # ------------------------------------------------------------------------------ |
| 86 | |
| 87 | # Force IE to render pages in the highest available mode in the various |
| 88 | # cases when it may not: http://hsivonen.iki.fi/doctype/ie-mode.pdf. |
| 89 | |
| 90 | <IfModule mod_headers.c> |
| 91 | Header set X-UA-Compatible "IE=edge" |
| 92 | # `mod_headers` can't match based on the content-type, however, we only |
| 93 | # want to send this header for HTML pages and not for the other resources |
| 94 | <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$"> |
| 95 | Header unset X-UA-Compatible |
| 96 | </FilesMatch> |
| 97 | </IfModule> |
| 98 | |
| 99 | # ------------------------------------------------------------------------------ |
| 100 | # | Cookie setting from iframes | |
| 101 | # ------------------------------------------------------------------------------ |
| 102 | |
| 103 | # Allow cookies to be set from iframes in IE. |
| 104 | |
| 105 | # <IfModule mod_headers.c> |
| 106 | # Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"" |
| 107 | # </IfModule> |
| 108 | |
| 109 | # ------------------------------------------------------------------------------ |
| 110 | # | Screen flicker | |
| 111 | # ------------------------------------------------------------------------------ |
| 112 | |
| 113 | # Stop screen flicker in IE on CSS rollovers (this only works in |
| 114 | # combination with the `ExpiresByType` directives for images from below). |
| 115 | |
| 116 | # BrowserMatch "MSIE" brokenvary=1 |
| 117 | # BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1 |
| 118 | # BrowserMatch "Opera" !brokenvary |
| 119 | # SetEnvIf brokenvary 1 force-no-vary |
| 120 | |
| 121 | |
| 122 | # ############################################################################## |
| 123 | # # MIME TYPES AND ENCODING # |
| 124 | # ############################################################################## |
| 125 | |
| 126 | # ------------------------------------------------------------------------------ |
| 127 | # | Proper MIME types for all files | |
| 128 | # ------------------------------------------------------------------------------ |
| 129 | |
| 130 | <IfModule mod_mime.c> |
| 131 | |
| 132 | # Audio |
| 133 | AddType audio/mp4 m4a f4a f4b |
| 134 | AddType audio/ogg oga ogg |
| 135 | |
| 136 | # JavaScript |
| 137 | # Normalize to standard type (it's sniffed in IE anyways): |
| 138 | # http://tools.ietf.org/html/rfc4329#section-7.2 |
| 139 | AddType application/javascript js jsonp |
| 140 | AddType application/json json |
| 141 | |
| 142 | # Video |
| 143 | AddType video/mp4 mp4 m4v f4v f4p |
| 144 | AddType video/ogg ogv |
| 145 | AddType video/webm webm |
| 146 | AddType video/x-flv flv |
| 147 | |
| 148 | # Web fonts |
| 149 | AddType application/font-woff woff |
| 150 | AddType application/vnd.ms-fontobject eot |
| 151 | |
| 152 | # Browsers usually ignore the font MIME types and sniff the content, |
| 153 | # however, Chrome shows a warning if other MIME types are used for the |
| 154 | # following fonts. |
| 155 | AddType application/x-font-ttf ttc ttf |
| 156 | AddType font/opentype otf |
| 157 | |
| 158 | # Make SVGZ fonts work on iPad: |
| 159 | # https://twitter.com/FontSquirrel/status/14855840545 |
| 160 | AddType image/svg+xml svg svgz |
| 161 | AddEncoding gzip svgz |
| 162 | |
| 163 | # Other |
| 164 | AddType application/octet-stream safariextz |
| 165 | AddType application/x-chrome-extension crx |
| 166 | AddType application/x-opera-extension oex |
| 167 | AddType application/x-shockwave-flash swf |
| 168 | AddType application/x-web-app-manifest+json webapp |
| 169 | AddType application/x-xpinstall xpi |
| 170 | AddType application/xml atom rdf rss xml |
| 171 | AddType image/webp webp |
| 172 | AddType image/x-icon ico |
| 173 | AddType text/cache-manifest appcache manifest |
| 174 | AddType text/vtt vtt |
| 175 | AddType text/x-component htc |
| 176 | AddType text/x-vcard vcf |
| 177 | |
| 178 | </IfModule> |
| 179 | |
| 180 | # ------------------------------------------------------------------------------ |
| 181 | # | UTF-8 encoding | |
| 182 | # ------------------------------------------------------------------------------ |
| 183 | |
| 184 | # Use UTF-8 encoding for anything served as `text/html` or `text/plain`. |
| 185 | AddDefaultCharset utf-8 |
| 186 | |
| 187 | # Force UTF-8 for certain file formats. |
| 188 | <IfModule mod_mime.c> |
| 189 | AddCharset utf-8 .atom .css .js .json .rss .vtt .webapp .xml |
| 190 | </IfModule> |
| 191 | |
| 192 | |
| 193 | # ############################################################################## |
| 194 | # # URL REWRITES # |
| 195 | # ############################################################################## |
| 196 | |
| 197 | # ------------------------------------------------------------------------------ |
| 198 | # | Rewrite engine | |
| 199 | # ------------------------------------------------------------------------------ |
| 200 | |
| 201 | # Turning on the rewrite engine and enabling the `FollowSymLinks` option is |
| 202 | # necessary for the following directives to work. |
| 203 | |
| 204 | # If your web host doesn't allow the `FollowSymlinks` option, you may need to |
| 205 | # comment it out and use `Options +SymLinksIfOwnerMatch` but, be aware of the |
| 206 | # performance impact: http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks |
| 207 | |
| 208 | # Also, some cloud hosting services require `RewriteBase` to be set: |
| 209 | # http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-mod-rewrite-not-working-on-my-site |
| 210 | |
| 211 | <IfModule mod_rewrite.c> |
| 212 | Options +FollowSymlinks |
| 213 | # Options +SymLinksIfOwnerMatch |
| 214 | RewriteEngine On |
| 215 | # RewriteBase / |
| 216 | </IfModule> |
| 217 | |
| 218 | # ------------------------------------------------------------------------------ |
| 219 | # | Suppressing / Forcing the "www." at the beginning of URLs | |
| 220 | # ------------------------------------------------------------------------------ |
| 221 | |
| 222 | # The same content should never be available under two different URLs especially |
| 223 | # not with and without "www." at the beginning. This can cause SEO problems |
| 224 | # (duplicate content), therefore, you should choose one of the alternatives and |
| 225 | # redirect the other one. |
| 226 | |
| 227 | # By default option 1 (no "www.") is activated: |
| 228 | # http://no-www.org/faq.php?q=class_b |
| 229 | |
| 230 | # If you'd prefer to use option 2, just comment out all the lines from option 1 |
| 231 | # and uncomment the ones from option 2. |
| 232 | |
| 233 | # IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME! |
| 234 | |
| 235 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 236 | |
| 237 | # Option 1: rewrite www.example.com → example.com |
| 238 | |
| 239 | <IfModule mod_rewrite.c> |
| 240 | RewriteCond %{HTTPS} !=on |
| 241 | RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] |
| 242 | RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] |
| 243 | </IfModule> |
| 244 | |
| 245 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 246 | |
| 247 | # Option 2: rewrite example.com → www.example.com |
| 248 | |
| 249 | # Be aware that the following might not be a good idea if you use "real" |
| 250 | # subdomains for certain parts of your website. |
| 251 | |
| 252 | # <IfModule mod_rewrite.c> |
| 253 | # RewriteCond %{HTTPS} !=on |
| 254 | # RewriteCond %{HTTP_HOST} !^www\..+$ [NC] |
| 255 | # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
| 256 | # </IfModule> |
| 257 | |
| 258 | |
| 259 | # ############################################################################## |
| 260 | # # SECURITY # |
| 261 | # ############################################################################## |
| 262 | |
| 263 | # ------------------------------------------------------------------------------ |
| 264 | # | Content Security Policy (CSP) | |
| 265 | # ------------------------------------------------------------------------------ |
| 266 | |
| 267 | # You can mitigate the risk of cross-site scripting and other content-injection |
| 268 | # attacks by setting a Content Security Policy which whitelists trusted sources |
| 269 | # of content for your site. |
| 270 | |
| 271 | # The example header below allows ONLY scripts that are loaded from the current |
| 272 | # site's origin (no inline scripts, no CDN, etc). This almost certainly won't |
| 273 | # work as-is for your site! |
| 274 | |
| 275 | # To get all the details you'll need to craft a reasonable policy for your site, |
| 276 | # read: http://html5rocks.com/en/tutorials/security/content-security-policy (or |
| 277 | # see the specification: http://w3.org/TR/CSP). |
| 278 | |
| 279 | # <IfModule mod_headers.c> |
| 280 | # Header set Content-Security-Policy "script-src 'self'; object-src 'self'" |
| 281 | # <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$"> |
| 282 | # Header unset Content-Security-Policy |
| 283 | # </FilesMatch> |
| 284 | # </IfModule> |
| 285 | |
| 286 | # ------------------------------------------------------------------------------ |
| 287 | # | File access | |
| 288 | # ------------------------------------------------------------------------------ |
| 289 | |
| 290 | # Block access to directories without a default document. |
| 291 | # Usually you should leave this uncommented because you shouldn't allow anyone |
| 292 | # to surf through every directory on your server (which may includes rather |
| 293 | # private places like the CMS's directories). |
| 294 | |
| 295 | <IfModule mod_autoindex.c> |
| 296 | Options -Indexes |
| 297 | </IfModule> |
| 298 | |
| 299 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 300 | |
| 301 | # Block access to hidden files and directories. |
| 302 | # This includes directories used by version control systems such as Git and SVN. |
| 303 | |
| 304 | <IfModule mod_rewrite.c> |
| 305 | RewriteCond %{SCRIPT_FILENAME} -d [OR] |
| 306 | RewriteCond %{SCRIPT_FILENAME} -f |
| 307 | RewriteRule "(^|/)\." - [F] |
| 308 | </IfModule> |
| 309 | |
| 310 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 311 | |
| 312 | # Block access to backup and source files. |
| 313 | # These files may be left by some text editors and can pose a great security |
| 314 | # danger when anyone has access to them. |
| 315 | |
| 316 | <FilesMatch "(^#.*#|\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|sw[op])|~)$"> |
| 317 | Order allow,deny |
| 318 | Deny from all |
| 319 | Satisfy All |
| 320 | </FilesMatch> |
| 321 | |
| 322 | # ------------------------------------------------------------------------------ |
| 323 | # | Secure Sockets Layer (SSL) | |
| 324 | # ------------------------------------------------------------------------------ |
| 325 | |
| 326 | # Rewrite secure requests properly to prevent SSL certificate warnings, e.g.: |
| 327 | # prevent `https://www.example.com` when your certificate only allows |
| 328 | # `https://secure.example.com`. |
| 329 | |
| 330 | # <IfModule mod_rewrite.c> |
| 331 | # RewriteCond %{SERVER_PORT} !^443 |
| 332 | # RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L] |
| 333 | # </IfModule> |
| 334 | |
| 335 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 336 | |
| 337 | # Force client-side SSL redirection. |
| 338 | |
| 339 | # If a user types "example.com" in his browser, the above rule will redirect him |
| 340 | # to the secure version of the site. That still leaves a window of opportunity |
| 341 | # (the initial HTTP connection) for an attacker to downgrade or redirect the |
| 342 | # request. The following header ensures that browser will ONLY connect to your |
| 343 | # server via HTTPS, regardless of what the users type in the address bar. |
| 344 | # http://www.html5rocks.com/en/tutorials/security/transport-layer-security/ |
| 345 | |
| 346 | # <IfModule mod_headers.c> |
| 347 | # Header set Strict-Transport-Security max-age=16070400; |
| 348 | # </IfModule> |
| 349 | |
| 350 | # ------------------------------------------------------------------------------ |
| 351 | # | Server software information | |
| 352 | # ------------------------------------------------------------------------------ |
| 353 | |
| 354 | # Avoid displaying the exact Apache version number, the description of the |
| 355 | # generic OS-type and the information about Apache's compiled-in modules. |
| 356 | |
| 357 | # ADD THIS DIRECTIVE IN THE `httpd.conf` AS IT WILL NOT WORK IN THE `.htaccess`! |
| 358 | |
| 359 | # ServerTokens Prod |
| 360 | |
| 361 | |
| 362 | # ############################################################################## |
| 363 | # # WEB PERFORMANCE # |
| 364 | # ############################################################################## |
| 365 | |
| 366 | # ------------------------------------------------------------------------------ |
| 367 | # | Compression | |
| 368 | # ------------------------------------------------------------------------------ |
| 369 | |
| 370 | <IfModule mod_deflate.c> |
| 371 | |
| 372 | # Force compression for mangled headers. |
| 373 | # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping |
| 374 | <IfModule mod_setenvif.c> |
| 375 | <IfModule mod_headers.c> |
| 376 | SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding |
| 377 | RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding |
| 378 | </IfModule> |
| 379 | </IfModule> |
| 380 | |
| 381 | # Compress all output labeled with one of the following MIME-types |
| 382 | # (for Apache versions below 2.3.7, you don't need to enable `mod_filter` |
| 383 | # and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines |
| 384 | # as `AddOutputFilterByType` is still in the core directives). |
| 385 | <IfModule mod_filter.c> |
| 386 | AddOutputFilterByType DEFLATE application/atom+xml \ |
| 387 | application/javascript \ |
| 388 | application/json \ |
| 389 | application/rss+xml \ |
| 390 | application/vnd.ms-fontobject \ |
| 391 | application/x-font-ttf \ |
| 392 | application/x-web-app-manifest+json \ |
| 393 | application/xhtml+xml \ |
| 394 | application/xml \ |
| 395 | font/opentype \ |
| 396 | image/svg+xml \ |
| 397 | image/x-icon \ |
| 398 | text/css \ |
| 399 | text/html \ |
| 400 | text/plain \ |
| 401 | text/x-component \ |
| 402 | text/xml |
| 403 | </IfModule> |
| 404 | |
| 405 | </IfModule> |
| 406 | |
| 407 | # ------------------------------------------------------------------------------ |
| 408 | # | Content transformations | |
| 409 | # ------------------------------------------------------------------------------ |
| 410 | |
| 411 | # Prevent some of the mobile network providers from modifying the content of |
| 412 | # your site: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5. |
| 413 | |
| 414 | # <IfModule mod_headers.c> |
| 415 | # Header set Cache-Control "no-transform" |
| 416 | # </IfModule> |
| 417 | |
| 418 | # ------------------------------------------------------------------------------ |
| 419 | # | ETag removal | |
| 420 | # ------------------------------------------------------------------------------ |
| 421 | |
| 422 | # Since we're sending far-future expires headers (see below), ETags can |
| 423 | # be removed: http://developer.yahoo.com/performance/rules.html#etags. |
| 424 | |
| 425 | # `FileETag None` is not enough for every server. |
| 426 | <IfModule mod_headers.c> |
| 427 | Header unset ETag |
| 428 | </IfModule> |
| 429 | |
| 430 | FileETag None |
| 431 | |
| 432 | # ------------------------------------------------------------------------------ |
| 433 | # | Expires headers (for better cache control) | |
| 434 | # ------------------------------------------------------------------------------ |
| 435 | |
| 436 | # The following expires headers are set pretty far in the future. If you don't |
| 437 | # control versioning with filename-based cache busting, consider lowering the |
| 438 | # cache time for resources like CSS and JS to something like 1 week. |
| 439 | |
| 440 | <IfModule mod_expires.c> |
| 441 | |
| 442 | ExpiresActive on |
| 443 | ExpiresDefault "access plus 1 month" |
| 444 | |
| 445 | # CSS |
| 446 | ExpiresByType text/css "access plus 1 year" |
| 447 | |
| 448 | # Data interchange |
| 449 | ExpiresByType application/json "access plus 0 seconds" |
| 450 | ExpiresByType application/xml "access plus 0 seconds" |
| 451 | ExpiresByType text/xml "access plus 0 seconds" |
| 452 | |
| 453 | # Favicon (cannot be renamed!) |
| 454 | ExpiresByType image/x-icon "access plus 1 week" |
| 455 | |
| 456 | # HTML components (HTCs) |
| 457 | ExpiresByType text/x-component "access plus 1 month" |
| 458 | |
| 459 | # HTML |
| 460 | ExpiresByType text/html "access plus 0 seconds" |
| 461 | |
| 462 | # JavaScript |
| 463 | ExpiresByType application/javascript "access plus 1 year" |
| 464 | |
| 465 | # Manifest files |
| 466 | ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" |
| 467 | ExpiresByType text/cache-manifest "access plus 0 seconds" |
| 468 | |
| 469 | # Media |
| 470 | ExpiresByType audio/ogg "access plus 1 month" |
| 471 | ExpiresByType image/gif "access plus 1 month" |
| 472 | ExpiresByType image/jpeg "access plus 1 month" |
| 473 | ExpiresByType image/png "access plus 1 month" |
| 474 | ExpiresByType video/mp4 "access plus 1 month" |
| 475 | ExpiresByType video/ogg "access plus 1 month" |
| 476 | ExpiresByType video/webm "access plus 1 month" |
| 477 | |
| 478 | # Web feeds |
| 479 | ExpiresByType application/atom+xml "access plus 1 hour" |
| 480 | ExpiresByType application/rss+xml "access plus 1 hour" |
| 481 | |
| 482 | # Web fonts |
| 483 | ExpiresByType application/font-woff "access plus 1 month" |
| 484 | ExpiresByType application/vnd.ms-fontobject "access plus 1 month" |
| 485 | ExpiresByType application/x-font-ttf "access plus 1 month" |
| 486 | ExpiresByType font/opentype "access plus 1 month" |
| 487 | ExpiresByType image/svg+xml "access plus 1 month" |
| 488 | |
| 489 | </IfModule> |
| 490 | |
| 491 | # ------------------------------------------------------------------------------ |
| 492 | # | Filename-based cache busting | |
| 493 | # ------------------------------------------------------------------------------ |
| 494 | |
| 495 | # If you're not using a build process to manage your filename version revving, |
| 496 | # you might want to consider enabling the following directives to route all |
| 497 | # requests such as `/css/style.12345.css` to `/css/style.css`. |
| 498 | |
| 499 | # To understand why this is important and a better idea than `*.css?v231`, read: |
| 500 | # http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring |
| 501 | |
| 502 | # <IfModule mod_rewrite.c> |
| 503 | # RewriteCond %{REQUEST_FILENAME} !-f |
| 504 | # RewriteCond %{REQUEST_FILENAME} !-d |
| 505 | # RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L] |
| 506 | # </IfModule> |
| 507 | |
| 508 | # ------------------------------------------------------------------------------ |
| 509 | # | File concatenation | |
| 510 | # ------------------------------------------------------------------------------ |
| 511 | |
| 512 | # Allow concatenation from within specific CSS and JS files, e.g.: |
| 513 | # Inside of `script.combined.js` you could have |
| 514 | # <!--#include file="libs/jquery.js" --> |
| 515 | # <!--#include file="plugins/jquery.idletimer.js" --> |
| 516 | # and they would be included into this single file. |
| 517 | |
| 518 | # <IfModule mod_include.c> |
| 519 | # <FilesMatch "\.combined\.js$"> |
| 520 | # Options +Includes |
| 521 | # AddOutputFilterByType INCLUDES application/javascript application/json |
| 522 | # SetOutputFilter INCLUDES |
| 523 | # </FilesMatch> |
| 524 | # <FilesMatch "\.combined\.css$"> |
| 525 | # Options +Includes |
| 526 | # AddOutputFilterByType INCLUDES text/css |
| 527 | # SetOutputFilter INCLUDES |
| 528 | # </FilesMatch> |
| 529 | # </IfModule> |
| 530 | |
| 531 | # ------------------------------------------------------------------------------ |
| 532 | # | Persistent connections | |
| 533 | # ------------------------------------------------------------------------------ |
| 534 | |
| 535 | # Allow multiple requests to be sent over the same TCP connection: |
| 536 | # http://httpd.apache.org/docs/current/en/mod/core.html#keepalive. |
| 537 | |
| 538 | # Enable if you serve a lot of static content but, be aware of the |
| 539 | # possible disadvantages! |
| 540 | |
| 541 | # <IfModule mod_headers.c> |
| 542 | # Header set Connection Keep-Alive |
| 543 | # </IfModule> |