Evo supports Friendly URLs via this .htaccess
file. You must serve web pages via Apache with mod_rewrite
to use this functionality, and you must change the file name from ht.access
to .htaccess
. Additional tweaks and environment specific additions follow the default template below:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Options +FollowSymlinks RewriteEngine On RewriteBase / # Fix Apache internal dummy connections from breaking [(site_url)] cache RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC] RewriteRule .* - [F,L] # Rewrite domain.com -> www.domain.com -- used with SEO Strict URLs plugin #RewriteCond %{HTTP_HOST} . #RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] #RewriteRule (.*) http: //www.example.com/$1 [R=301,L] # Exclude /assets and /manager directories from rewrite rules RewriteRule ^(manager|assets) - [L] # For Friendly URLs RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q= $1 [L,QSA] # Reduce server overhead by enabling output compression if supported. #php_flag zlib.output_compression On #php_value zlib.output_compression_level 5 |
Make sure RewriteBase points to the directory where you installed Evo. E.g., "/Evo" if your installation is in a "Evo" subdirectory:
1 | RewriteBase /Evo |
Note in the last block of directives the gzip compression was left commented out since this can potentially cause issues in some environemnts. For a faster webserver experience, ucomment the last two lines as follows:
1 2 3 | # Reduce server overhead by enabling output compression if supported. php_flag zlib.output_compression On php_value zlib.output_compression_level 5 |
You may also want to make your URLs non-case-sensitive by adding a NC directive to the directive in the "For Friendly URLs" part:
1 | RewriteRule ^(.*)$ index.php?q= $1 [L,QSA,NC] |
If you prefer your website to always add the "www." part to always show "www.example.com" URLs, then the section below should be changed as follows:
1 2 3 | RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] RewriteRule (.*) http: //www.example.com/$1 [R=301,L] |
If you're working off of virtual domains and have a preview for development or while waiting for DNS updates to occur such as accessing your site through "http://10.0.0.1/~myacct", the rewrite rule should be written as follows. Don't forget to change it back when you go live.
1 2 3 | RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /~myacct/index.php?q= $1 [L,QSA] |
If you would like to limit the admin interface to being accessed by only a specific IP address, but need access to some things on the public site like the captcha, use the following. Make sure this goes inside the admins interface directory:
1 2 3 4 5 6 7 | # Allow admin access to specific IPs only Options +FollowSymlinks RewriteEngine On # Deny by IP. The IP address(es) listed will get through. RewriteCond %{REMOTE_ADDR} !^(192\.168\.0\.128)$ RewriteCond %{REQUEST_FILENAME} !/includes/veriword\.php$ RewriteRule ^(.*)$ index.php?q= $1 [L,QSA] |
If you are deployed in an environment that has problems with aggressive garbage collection, as evidenced by unexpected and frequent logouts from the admin interface, then you can adjust the location of the sessions to remove them from the default and shared global tmp/session location:
1 2 | php_value session.save_path /path/to/your/web/content/sessions/ php_value session.gc_maxlifetime 28800 |
By default, Evo's htaccess template file excludes the /assets and admin interface directories from rewrite rules. If you are using a Evo document as a CSS file, you'll need to adjust the one line to allow rewrites in the /assets directory if that's where you store your CSS file.
1 | RewriteRule ^(manager|assets) - [L] |
Would become
1 | RewriteRule ^manager - [L] |
1 | RewriteRule ^(manager|assets/images|assets/snippets) - [L] |
Some servers do not have their timezone settings set, which can cause issues. You can try the following setting with full details of timezone definitions available in the full List of Supported Timezones
1 | php_value date .timezone Europe/Moscow |
or
1 | SetEnv TZ America/Chicago |
Really, you should fix your code and database to handle character sets properly. But, if you insist, please read the AddDefaultCharset Directive and you might consider using:
1 | AddDefaultCharset utf-8 |
As of Evo v.1.2.1 your server must have register_globals deactivated, otherwise Evo will not work.
Your site is almost 99.99999% absolutely destined to be hacked at some point by script kiddies with register_globals on, ESPECIALLY in shared hosting environemnts. This is an inherrent security risk, equivalent to letting a baby play with a loaded gun and hoping they don't pull the trigger. If you're paying under $15/month, you're on a shared host. For more information about Using register_globals
To verify that this option has been set to OFF, open the Admin Interface and choose Reports -> System Info and then click the phpinfo() link. Do a Find on Page for "register_globals". The Local Value should be OFF. If the Master Value is OFF then you do not need this directive here.
IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS:
Your server does not allow PHP directives to be set via .htaccess. In that case you must make this change in your php.ini file instead. If you are using a commercial web host, contact the administrators for assistance in doing this. Not all servers allow local php.ini files, and they should include all PHP configurations (not just this one), or you will effectively reset everything to PHP defaults. Consult www.php.net for more detailed information about setting PHP directives.
1 2 | # Turn off register_globals because I have a lazy webhost that doesn't care about security php_flag register_globals Off |
If htc files are being used on your site, some servers may serve this with the incorrect mime type. The following can be added to resolve this. The following is critical for MS Windows XP SP2 surfers:
1 2 | # Fix .htc mime type for Internet Explorer AddType text/x-component .htc |
The following directives stop screen flicker in IE on CSS rollovers. When they're in place, you may have to do a force-refresh in order to see changes in your designs.
1 2 3 4 5 6 7 8 9 | # Fix screen flicker for images in Internet Explorer ExpiresActive On ExpiresByType image/gif A2592000 ExpiresByType image/jpeg A2592000 ExpiresByType image/png A2592000 BrowserMatch "MSIE" brokenvary=1 BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1 BrowserMatch "Opera" !brokenvary SetEnvIf brokenvary 1 force-no-vary |