Options -MultiViews # # REWRITE # # Used to: create nice urls, force https, and hav the site multilanguage. # 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] # # EXPIRES # # Used to: control the cache times of the different files on the server. # 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" # # HEADERS # # Used to: control the cache times of the different files on the client. # Header set Cache-Control "max-age=864000, public, must-revalidate" # # Header set Cache-Control "max-age=864000, public, must-revalidate" # Header set Cache-Control "max-age=864000, private, must-revalidate" Header set Cache-Control "max-age=86400, private, must-revalidate" 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 # # ERROR # # Used to: redirect to nice error pages. # ErrorDocument 400 /error.php ErrorDocument 401 /error.php ErrorDocument 403 /error.php ErrorDocument 404 /error.php ErrorDocument 500 /error.php