Htaccess: Difference between revisions
m Text replacement - "</code>" to "}}" |
|||
| (8 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{DISPLAYTITLE:htaccess}} | |||
== Forcing .sh, .c, .cpp as Text Files == | == Forcing .sh, .c, .cpp as Text Files == | ||
| Line 34: | Line 35: | ||
If you want your directory index to include a header file, use the {{code|HeaderName}} directive: | If you want your directory index to include a header file, use the {{code|HeaderName}} directive: | ||
{{highlight|lang=apache|code= | |||
HeaderName header.html | HeaderName header.html | ||
}} | |||
== Enabling/Disabling Directory Index == | == Enabling/Disabling Directory Index == | ||
| Line 55: | Line 58: | ||
}} | }} | ||
[[Category:Linux]] | === Fancy Indexing === | ||
You can enable fancy indexing if it isn't already enabled with: | |||
{{highlight|lang=apache|code= | |||
IndexOptions +FancyIndexing | |||
}} | |||
Alternatively, you could try to use something like https://github.com/Vestride/fancy-index for an even fancier index. | |||
== Enforce HTTPS using .htaccess == | |||
To force HTTPS access to your website using .htaccess, append the following: | |||
{{highlight|lang=apache|code= | |||
RewriteEngine On | |||
RewriteCond %{HTTPS} off | |||
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] | |||
}} | |||
== Require Authentication unless on white-listed IP == | |||
If you want to protect something with a password unless access is from a set of white listed IP addresses, use the {{code|Satisfy any}} directive like so: | |||
{{highlight|lang=apache|code= | |||
AuthType Basic | |||
AuthName "Please Log In" | |||
AuthUserFile /data/html/.htpasswd | |||
Require valid-user | |||
Order deny,allow | |||
Deny from all | |||
# Allow localhost, 10.1.x.x, and 136.159.16.x | |||
Allow from 127.0.0.1 10.1 136.159.16 | |||
Satisfy any | |||
}} | |||
The {{code|Allow from}} directive takes a list of IP addresses and matches the start of the IP address. | |||
== Redirect to HTTPS before Authentication == | |||
If you need to redirect users to use https:// rather than http:// on a website with .htaccess authentication, do something similar to: | |||
{{highlight|lang=apache|code= | |||
# Force SSL by redirecting to https if not on https | |||
SSLOptions +StrictRequire | |||
SSLRequireSSL | |||
SSLRequire %{HTTP_HOST} eq "steamr.com" | |||
ErrorDocument 403 https://steamr.com/ | |||
# Authentication | |||
AuthType Basic | |||
AuthName "Protected" | |||
# LDAP | |||
AuthBasicProvider ldap file | |||
AuthzLDAPAuthoritative off | |||
AuthLDAPURL "ldap://auth.steamr.com/ou=People,dc=steamr,dc=com" | |||
# Simple file auth | |||
AuthUserFile /path/to/passwd | |||
Require valid-user | |||
}} | |||
== Rewrite to index.php == | |||
To rewrite all non file or directory requests to a specific file (such as index.php), useful for MediaWiki or WordPress for instance, use: | |||
{{highlight|lang=text|code= | |||
RewriteEngine On | |||
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f | |||
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d | |||
RewriteRule ^(.*)$ index.php [L] | |||
}} | |||
{{Navbox Linux}}[[Category:Linux]] | |||
[[Category:LinuxUtilities]] | |||
Latest revision as of 23:22, 14 June 2020
Forcing .sh, .c, .cpp as Text Files
If you are presented with a download window when you click on a .sh or .c file, you may force the content to be a text file on apache by putting the following lines in your .htaccess file:
AddType text/plain .sh
AddType text/plain .c
AddType text/plain .cpp
Hiding Specific Files from Directory Index
To hide specific files or directories from the directory index, use the IndexIgnore directive:
IndexIgnore hidden_directory
IndexIgnore "secret stash"
IndexIgnore hidden_file.html
As you would expect, enclose directory with spaces with quotes.
Restricting Access by IP address
To allow certain IP address access:
Order deny,allow
Deny from all
Allow from 172.20.1
Allow from 172.18.1
Enabling Directory Index Header
If you want your directory index to include a header file, use the HeaderName directive:
HeaderName header.html
Enabling/Disabling Directory Index
To enable:
Options +Indexes
To disable:
Options -Indexes
If the above doesn't work, ensure that your apache configuration allows override on directories. Eg:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
Fancy Indexing
You can enable fancy indexing if it isn't already enabled with:
IndexOptions +FancyIndexing
Alternatively, you could try to use something like https://github.com/Vestride/fancy-index for an even fancier index.
Enforce HTTPS using .htaccess
To force HTTPS access to your website using .htaccess, append the following:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Require Authentication unless on white-listed IP
If you want to protect something with a password unless access is from a set of white listed IP addresses, use the Satisfy any directive like so:
AuthType Basic
AuthName "Please Log In"
AuthUserFile /data/html/.htpasswd
Require valid-user
Order deny,allow
Deny from all
# Allow localhost, 10.1.x.x, and 136.159.16.x
Allow from 127.0.0.1 10.1 136.159.16
Satisfy any
The Allow from directive takes a list of IP addresses and matches the start of the IP address.
Redirect to HTTPS before Authentication
If you need to redirect users to use https:// rather than http:// on a website with .htaccess authentication, do something similar to:
# Force SSL by redirecting to https if not on https
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "steamr.com"
ErrorDocument 403 https://steamr.com/
# Authentication
AuthType Basic
AuthName "Protected"
# LDAP
AuthBasicProvider ldap file
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://auth.steamr.com/ou=People,dc=steamr,dc=com"
# Simple file auth
AuthUserFile /path/to/passwd
Require valid-user
Rewrite to index.php
To rewrite all non file or directory requests to a specific file (such as index.php), useful for MediaWiki or WordPress for instance, use:
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ index.php [L]