# Noelab Seo Speed
# Italian Support Group for Elgg
# @package Fast by Default - Elgg Performances - SEO
# @author Lord55
# @link http://www.noelab.com/
#
#CHANGES:
#Remove ETags and Last Modified
#Force the latest IE version
#Don't compress images
#Header unset Pragma
#added Cache-Control
#=============================================================================#
# START MAIN SETTINGS AND OPTIONS
#=============================================================================#
<Files "htaccess_dist">
order allow,deny
deny from all
</Files>
# Don't listing directory
Options -Indexes
# Follow symbolic links
Options +FollowSymLinks
# Default handler
DirectoryIndex index.php
#=============================================================================#
# END MAIN SETTINGS AND OPTIONS
#=============================================================================#
#=============================================================================#
# START Force the latest IE version
#=============================================================================#
# Force the latest IE version, in various cases when it may fall back to IE7 mode
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
</IfModule>
</IfModule>
# Because X-UA-Compatible isn't sent to non-IE (to save header bytes),
# We need to inform proxies that content changes based on UA
<IfModule mod_headers.c>
Header append Vary User-Agent
# Cache control is set only if mod_headers is enabled, so that's unncessary to declare
</IfModule>
#=============================================================================#
# END Force the latest IE version
#=============================================================================#
#=============================================================================#
# START SEO GZIP AND OPTIMIZATION: Deflate/NoImages Compressed/
#=============================================================================#
## Apache2 deflate support if available
## Important note: mod_headers is required for correct functioning across proxies.
<IfModule mod_deflate.c>
# html, txt, css, js, json, xml, htc:
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
#Deactivate compression for buggy browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.[0678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# The following is to disable compression for actions. The reason being is that these
# may offer direct downloads which (since the initial request comes in as text/html and headers
# get changed in the script) get double compressed and become unusable when downloaded by IE.
SetEnvIfNoCase Request_URI action\/* no-gzip dont-vary
SetEnvIfNoCase Request_URI actions\/* no-gzip dont-vary
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>
#=============================================================================#
# END SEO GZIP AND OPTIMIZATION
#=============================================================================#
#=============================================================================#
# START SEO HEADERS, CACHING AND OPTIMIZATION
#=============================================================================#
Header unset Pragma
# Turn off the ETags
Header unset ETag
FileETag None
# Turn off the Last Modified header except for html docs
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css)$">
Header unset Last-Modified
</FilesMatch>
# Turn on expiry
<IfModule mod_expires.c>
Header set Cache-Control "public"
ExpiresActive on
ExpiresDefault "access plus 10 years"
</IfModule>
# 2 HOURS html
<FilesMatch "\.(html|htm|xml|txt|xsl)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
#=============================================================================#
# END SEO HEADERS, CACHING AND OPTIMIZATION
#=============================================================================#
#=============================================================================#
# START OPTIONS: PhpValue/
#=============================================================================#
# php 5, apache 1 and 2
<IfModule mod_php5.c>
# default memory limit to 64Mb
php_value memory_limit 64M
# to make sure register global is off
php_value register_globals 0
# max post size to 8Mb
php_value post_max_size 8388608
# upload size limit to 5Mb
php_value upload_max_filesize 5242880
# hide errors, enable only if debug enabled
php_value display_errors 0
</IfModule>
#=============================================================================#
# END OPTIONS: PhpValue/
#=============================================================================#
#=============================================================================#
# START MAIN REWRITES AND REDIRECTS
#=============================================================================#
<IfModule mod_rewrite.c>
RewriteEngine on
# If Elgg is in a subdirectory on your site, you might need to add a RewriteBase line
# containing the path from your site root to elgg's root. e.g. If your site is
# http://example.com/ and Elgg is in http://example.com/sites/elgg/, you might need
#
#RewriteBase /sites/elgg/
#
# here, only without the # in front.
#
# If you're not running Elgg in a subdirectory on your site, but still getting lots
# of 404 errors beyond the front page, you could instead try:
#
#RewriteBase /
RewriteRule ^action\/([A-Za-z0-9\_\-\/]+)$ engine/handlers/action_handler.php?action=$1&%{QUERY_STRING}
RewriteRule ^services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/service_handler.php?handler=$1&request=$2&%{QUERY_STRING}
RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)$ services/export/handler.php?view=$1&guid=$2
RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/$ services/export/handler.php?view=$1&guid=$2
RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ services/export/handler.php?view=$1&guid=$2&type=$3&idname=$4
RewriteRule ^\_css\/css\.css$ _css/css.php
RewriteRule ^pg\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/pagehandler.php?handler=$1&page=$2&%{QUERY_STRING}
RewriteRule ^pg\/([A-Za-z0-9\_\-]+)$ engine/handlers/pagehandler.php?handler=$1&%{QUERY_STRING}
RewriteRule xml-rpc.php engine/handlers/xml-rpc_handler.php
RewriteRule mt/mt-xmlrpc.cgi engine/handlers/xml-rpc_handler.php
RewriteRule ^tag/(.+)/?$ engine/handlers/pagehandler.php?handler=search&page=$1
</IfModule>
#=============================================================================#
# END MAIN REWRITES AND REDIRECTS
#=============================================================================#
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by RaĆ¼l Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.