# Elgg htaccess directives
# Copyright Curverider Ltd 2008-2009
# License http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
# Link http://elgg.org/
<IfModule !mod_rewrite.c>
# ugly ugly hack to detect missing mod_rewrite
# RedirectMatch must be to an absolute destination, so forces 500 error...
ErrorDocument 500 "Elgg error: Apache does not have mod_rewrite loaded. Please check your Apache setup."
RedirectMatch 302 .* index.php
</IfModule>
<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
# Turn on expiry
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 10 years"
</IfModule>
# php 4, apache 1.x
<IfModule mod_php4.c>
ErrorDocument 500 "Elgg error: Elgg does not support PHP 4."
RedirectMatch 302 .* index.php
</IfModule>
# php 4, apache 2
<IfModule sapi_apache2.c>
ErrorDocument 500 "Elgg error: Elgg does not support PHP 4."
RedirectMatch 302 .* index.php
</IfModule>
# 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>
# Turn on mod_gzip if available
<IfModule mod_gzip.c>
mod_gzip_on yes
mod_gzip_dechunk yes
mod_gzip_keep_workfiles No
mod_gzip_minimum_file_size 1000
mod_gzip_maximum_file_size 1000000
mod_gzip_maximum_inmem_size 1000000
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/javascript$
mod_gzip_item_include mime ^application/x-javascript$
# Exclude old browsers and images since IE has trouble with this
mod_gzip_item_exclude reqheader "User-Agent: .*Mozilla/4..*["
mod_gzip_item_exclude mime ^image/.*
</IfModule>
## Apache2 deflate support if available
##
## Important note: mod_headers is required for correct functioning across proxies.
##
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.[0678] no-gzip
BrowserMatch bMSIE !no-gzip
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>
# 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
</IfModule>
# Configure ETags
<FilesMatch ".(jpg|jpeg|gif|png|mp3|flv|mov|avi|3pg|html|htm|swf)$">
FileETag MTime Size
</FilesMatch>
<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 /social/
RewriteRule ^action/([A-Za-z0-9_-/]+)$ engine/handlers/action_handler.php?action=$1
RewriteRule ^services/api/([A-Za-z0-9_-]+)/(.*)$ engine/handlers/service_handler.php?handler=$1&request=$2
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
RewriteRule ^pg/([A-Za-z0-9_-]+)$ engine/handlers/pagehandler.php?handler=$1
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>