I've got HTML files stored with no extension (terribly, its a bad idea, but i must it), and apache is serving them as plain text?
How to configure APACHE to serve them as html?
Define defaultType
DefaultType specifies what mime type to use as the default (unknown extensions, or as is the case here, no extension).
So e.g. either modify the apache config to specify default type for the given directory:
<Directory /path/to/public_html/test/local>
# Force html
DefaultType text/html
</Directory>
Or create a .htaccess file in public_html/test/local to do the same:
# Force html
DefaultType text/html
I am running Apache 249 and attempting to use SSI via a weblogic application.
I have added the following lines to my config file.
AddType text/html .jsp
AddOutputFilter INCLUDES .jsp
And have added the Options Includes both to the virtualHost and below.
<Directory "/apache/htdocs">
Options Indexes FollowSymLinks Includes
AllowOverride None
Require all granted
</Directory>
If I acces a test SSI file from within /apache/htdocs it works fine, however if I use a Location block using the Weblogic Plugin it doesn't work.
Any idea what I am missing here?
You need to use SetOutputFilter Includes within your Location Block that will process the .jsp file from the proxy before passing to the client, allowing the Virtual Include to work.
I'm working on a mac running OS X Lion and PHP 5.3.6 and have tried both AddType, AddHander, and AllowOverride has been set to ALL in the httpd.conf; however, the PHP codes in HTML/JS/CSS files are still parsed as text. Files ending with .php are all good. I'm now getting really desperate after hours of googling.
Here are the contents of my .htaccess file:
AddType application/x-httpd-php5 .html .js .css
AddType application/x-httpd-php .html .js .css
AddHandler application/x-httpd-php5 .html .js .css
AddHandler application/x-httpd-php.html .js .css
If your site is stored in your user's Sites folder (i.e. /Users/username/Sites/) then you also need to set AllowOveride in the user-specific configuration file in /etc/apache2/users/username.conf. After making the change restart apache by disabling and re-enabling Web Sharing in the Sharing preference pane.
The AddType procedure (at least on Mac OS X Server) requires:
one and only extension per line
no dots before the extension
AddType application/x-httpd-php php
Have a look at /private/etc/apache2/httpd.conf for running examples.
(You should also remove the AddHandler procedures.)
I ran into same problem and fixed with:
<Files ~ "\.(gif|htm|txt|css|jpg|png)$">
SetHandler default-handler
</Files>
My server side includes work fine when accessing the website through http, but when trying to access the site securely (which is all set up sweet) they just don't get included.
I'm using the following code in the one file inside my apache2/sites-enabled directory:
<Directory /var/www/html>
Options +Includes
AddType text/html .htm
AddOutputFilter INCLUDES .htm
</Directory>
Any ideas about where to look?
Got it. I had only put the above code into the virtualhost section for the ordinary port, not the ssl port.
I am serving all content through apache with Content-Encoding: zip but that compresses on the fly. A good amount of my content is static files on the disk. I want to gzip the files beforehand rather than compressing them every time they are requested.
This is something that, I believe, mod_gzip did in Apache 1.x automatically, but just having the file with .gz next to it. That's no longer the case with mod_deflate.
This functionality was misplaced in mod_gzip anyway. In Apache 2.x, you do that with content negotiation. Specifically, you need to enable MultiViews with the Options directive and you need to specify your encoding types with the AddEncoding directive.
To answer my own question with the really simple line I was missing in my confiuration:
Options FollowSymLinks MultiViews
I was missing the MultiViews option. It's there in the Ubuntu default web server configuration, so don't be like me and drop it off.
Also I wrote a quick Rake task to compress all the files.
namespace :static do
desc "Gzip compress the static content so Apache doesn't need to do it on-the-fly."
task :compress do
puts "Gzipping js, html and css files."
Dir.glob("#{RAILS_ROOT}/public/**/*.{js,html,css}") do |file|
system "gzip -c -9 #{file} > #{file}.gz"
end
end
end
I am afraid MultiViews will not work as expected: the doc says Multiviews works "if the server receives a request for /some/dir/foo, if /some/dir has MultiViews enabled, and /some/dir/foo does not exist...", in other words: if you have a file foo.js and foo.js.gz in the same directory, just activating MultiViews will not cause the .gz file to be sent even if the AcceptEncoding gzip header is transmitted by the browser (you can verify this behavior by temporarily disabling mod_deflate and monitoring the response with e.g. HTTPFox).
I am not sure if there is a way around this with MultiViews (maybe you can rename the original file and then add a special AddEncoding directive), but I believe you can construct a mod_rewrite rule to handle this.
It is possible to serve pre-compressed files using mod_negotiation although it is a bit finicky. The primary difficulty is that only requests for files which do not exist are negotiated. So if foo.js and foo.js.gz both exist, responses for /foo.js will always be uncompressed (although responses for /foo would work correctly).
The easiest solution I've found (from François Marier) is to rename uncompressed files with a double file extension, so foo.js is deployed as foo.js.js so requests for /foo.js negotiate between foo.js.js (no encoding) and foo.js.gz (gzip encoding).
I combine that trick with the following configuration:
Options +MultiViews
RemoveType .gz
AddEncoding gzip .gz
# Send .tar.gz without Content-Encoding: gzip
<FilesMatch ".+\.tar\.gz$">
RemoveEncoding .gz
# Note: Can use application/x-gzip for backwards-compatibility
AddType application/gzip .gz
</FilesMatch>
I wrote a post which discusses the reasoning for this configuration and some alternatives in detail.
I have an Apache 2 built from source, and I found I had to modify the following in my httpd.conf file:
Add MultiViews to Options:
Options Indexes FollowSymLinks MultiViews
Uncomment AddEncoding:
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
Comment AddType:
#AddType application/x-compress .Z
#AddType application/x-gzip .gz .tgz
mod_gzip compressed content on the fly as well. You can pre-compress the files by actually logging into your server, and doing it from shell.
cd /var/www/.../data/
for file in *; do
gzip -c $file > $file.gz;
done;
You can use mod_cache to proxy local content in memory or on disk. I don't know if this will work as expected with mod_deflate.
I have a lot of big .json files. Most readers are in this situation. The preview answers didn't talk about the returned "Content-type".
I you want the following request return a pre-compressed file with "Content-Type: application/json" transparently, use Multiview with ForceType
http://www.domain.com/(...)/bigfile.json
-> Content-Encoding:gzip, Content-Type: Content-Encoding:gzip
1) files must be rename: "file.ext.ext"
2) Multiview works great with ForceType
In the file system:
// Note there is no bigfile.json
(...)/bigfile.json.gz
(...)/bigfile.json.json
In your apache config:
<Directory (...)>
AddEncoding gzip .gz
Options +Multiviews
<Files *.json.gz>
ForceType application/json
</Files>
</Directory>
Short and simple :)