Options -MultiViews



#
# REWRITE
#
# Used to: create nice urls, force https, and hav the site multilanguage.
#
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /

	# Force https
	RewriteCond %{HTTPS} !=on
	RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

	# Add final slash.
	RewriteRule ^([a-zA-Z]{2})$ $1/ [R=301]

	# For files, remove the last /
	RewriteCond %{REQUEST_URI} ^/([a-zA-Z]{2}/)?(.{3,})/$
	RewriteCond %{DOCUMENT_ROOT}/%2 !-d
	RewriteCond %{REQUEST_URI} /$
	RewriteRule ^(.{3,})/$ $1 [R=301]

	# For sections, add the last /
	RewriteCond %{REQUEST_URI} ^/([a-zA-Z]{2}/)?(.{3,})$
	RewriteCond %{DOCUMENT_ROOT}/%2 -d
	RewriteCond %{REQUEST_URI} !/$
	RewriteRule ^(.{3,})$ $1/ [R=301]

	# Hide the 'index.php'
	RewriteRule ^(.*)index\.php?$ $1 [L,R=301]

	# Remove page extensions
	RewriteCond %{THE_REQUEST} ^GET\ (.*)\.(php|html)([#?][^\ ]*)?\ HTTP
	RewriteRule ^(.*)\.(php|html)$ $1 [R=301]

	# Redirect permalinks.
        RewriteRule ^project/([A-Z\-a-z0-9]{3,}+)[\/]?$ /project/project.php?permalink=$1 [NC]
        RewriteRule ^blog/([A-Z\-a-z0-9]{3,}+)[\/]?$ /blog/post.php?permalink=$1 [NC]
        RewriteRule ^help[\/]?$ /help/index.php [NC]
        RewriteRule ^(perfil|xprofile|profila)[\/]?$ /profile/index.php [NC]

        # PHP to xml.
        RewriteRule ^sitemap.xml$ /sitemap.php [NC]
        RewriteRule ^imgmap.xml$ /sitemap-image.php [NC]
        RewriteRule ^rss.xml$ /rss.php

	# Language as GET param.
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_URI} ^/([a-zA-Z]{2})(/(.*))?$
	RewriteRule ^([a-zA-Z]{2})(/(.*))?$ $3?lang=$1 [L,QSA]

	# Add .php extension when needed. TODO: Actualy used?
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME}.php -f
	RewriteRule ^(.*)$ $1\.php [L]

</ifModule>


#
# EXPIRES
#
# Used to: control the cache times of the different files on the server.
#
<IfModule mod_expires.c>
        ExpiresActive on
	ExpiresDefault "access plus 2 days"
        ExpiresByType application/javascript "access plus 6 days"
        ExpiresByType image/x-ico "access plus 12 days"
        ExpiresByType image/jpg "access plus 12 days"
        ExpiresByType image/jpeg "access plus 12 days"
        ExpiresByType image/gif "access plus 12 days"
        ExpiresByType image/png "access plus 12 days"
        ExpiresByType video/mkv "access plus 12 days"
        #ExpiresByType text/css "access plus 6 days"
        ExpiresByType text/plain "access plus 6 days"
</IfModule>


#
# HEADERS
#
# Used to: control the cache times of the different files on the client.
#
<ifModule mod_headers.c>
	<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
		Header set Cache-Control "max-age=864000, public, must-revalidate"
	</filesMatch>
#	<filesMatch "\.(css)$">
#		Header set Cache-Control "max-age=864000, public, must-revalidate"
#	</filesMatch>
	<filesMatch "\.(js)$">
		Header set Cache-Control "max-age=864000, private, must-revalidate"
	</filesMatch>
	<filesMatch "\.(x?html?|php)$">
		Header set Cache-Control "max-age=86400, private, must-revalidate"
	</filesMatch>
</ifModule>

<ifModule mod_deflate.c>
	AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
	AddOutputFilterByType DEFLATE image/x-icon
	AddOutputFilterByType DEFLATE image/svg+xml application/xhtml+xml application/xml
	AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml
	AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript application/json
	AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf
	AddOutputFilterByType DEFLATE font/truetype font/opentype
</ifModule>

#
# ERROR
#
# Used to: redirect to nice error pages.
#
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php


