aboutsummaryrefslogtreecommitdiff
path: root/htaccess_dist
diff options
context:
space:
mode:
Diffstat (limited to 'htaccess_dist')
-rw-r--r--htaccess_dist142
1 files changed, 80 insertions, 62 deletions
diff --git a/htaccess_dist b/htaccess_dist
index 92e081bc3..44d129475 100644
--- a/htaccess_dist
+++ b/htaccess_dist
@@ -1,21 +1,11 @@
# 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
+ order allow,deny
+ deny from all
</Files>
-# Don't listing directory
+# Don't allow listing directories
Options -Indexes
# Follow symbolic links
@@ -24,52 +14,59 @@ Options +FollowSymLinks
# Default handler
DirectoryIndex index.php
-# Turn on expiry
+
+############################
+# BROWSER CACHING
+
+# The expires module controls the Expires and Cache-Control headers. Elgg sets
+# these for dynamically generated files so this is just for static files.
<IfModule mod_expires.c>
ExpiresActive On
- ExpiresDefault "access plus 10 years"
+ ExpiresDefault "access plus 1 year"
</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>
+# Conditional requests are controlled through Last-Modified and ETag headers.
+# Elgg sets these on dynamically generated cacheable files so this is just for
+# static files. Note: Apache sends Last-Modified by default on static files so
+# I don't think we need to be sending ETag for these files.
+<FilesMatch "\.(jpg|jpeg|gif|png|mp3|flv|mov|avi|3pg|html|htm|swf|js|css|ico)$">
+ FileETag MTime Size
+</FilesMatch>
-# 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
+############################
+# PHP SETTINGS
<IfModule mod_php5.c>
- # default memory limit to 64Mb
+ # limit the maximum memory consumed by the php script to 64 MB
php_value memory_limit 64M
- # to make sure register global is off
+ # register_globals is deprecated as of PHP 5.3.0 - disable it for security reasons.
php_value register_globals 0
- # max post size to 8Mb
+ # post_max_size is the maximum size of ALL the data that is POST'ed to php at a time (8 MB)
php_value post_max_size 8388608
- # upload size limit to 5Mb
+ # upload_max_filesize is the maximum size of a single uploaded file (5 MB)
php_value upload_max_filesize 5242880
- # hide errors, enable only if debug enabled
+ # on development servers, set to 1 to display errors. Set to 0 on production servers.
php_value display_errors 0
</IfModule>
+
+############################
+# COMPRESSION
+
# 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/.*
+ 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
@@ -82,22 +79,21 @@ DirectoryIndex index.php
BrowserMatch ^Mozilla/4\.[0678] no-gzip
BrowserMatch \bMSIE !no-gzip
-<IfModule mod_headers.c>
+<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
-</IfModule>
-
+</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>
+
+############################
+# REWRITE RULES
<IfModule mod_rewrite.c>
@@ -105,7 +101,7 @@ 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
+# http://example.com/ and Elgg is in http://example.com/sites/elgg/, you might need
#
#RewriteBase /sites/elgg/
#
@@ -116,22 +112,44 @@ RewriteEngine on
#
#RewriteBase /
-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
+# If your users receive the message "Sorry, logging in from a different domain is not permitted"
+# you must make sure your login form is served from the same hostname as your site pages.
+# See http://docs.elgg.org/wiki/Login_token_mismatch_error for more info.
+#
+# If you must add RewriteRules to change hostname, add them directly below (above all the others)
+
+
+# In for backwards compatibility
+RewriteRule ^pg\/([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1&%{QUERY_STRING} [L]
+RewriteRule ^pg\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2&%{QUERY_STRING} [L]
+RewriteRule ^tag\/(.+)\/?$ engine/handlers/page_handler.php?handler=search&page=$1 [L]
+
+
+RewriteRule ^action\/([A-Za-z0-9\_\-\/]+)$ engine/handlers/action_handler.php?action=$1&%{QUERY_STRING} [L]
+
+RewriteRule ^cache\/(.*)$ engine/handlers/cache_handler.php?request=$1&%{QUERY_STRING} [L]
+
+RewriteRule ^services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/service_handler.php?handler=$1&request=$2&%{QUERY_STRING} [L]
+
+RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/?$ engine/handlers/export_handler.php?view=$1&guid=$2 [L]
+RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4 [L]
+
+RewriteRule xml-rpc.php engine/handlers/xml-rpc_handler.php [L]
+RewriteRule mt/mt-xmlrpc.cgi engine/handlers/xml-rpc_handler.php [L]
-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
+# rule for rewrite module test during install - can be removed after installation
+RewriteRule ^rewrite.php$ install.php [L]
-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
+# Everything else that isn't a file gets routed through the page handler
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1 [QSA,L]
-RewriteRule xml-rpc.php engine/handlers/xml-rpc_handler.php
-RewriteRule mt/mt-xmlrpc.cgi engine/handlers/xml-rpc_handler.php
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2 [QSA,L]
-RewriteRule ^tag/(.+)/?$ engine/handlers/pagehandler.php?handler=search&page=$1
</IfModule>