HT: Difference between revisions
Removed excess category tags; Additional grammar and cleanup edits. |
|||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
This article will help you understand and | This article will help you understand some aspects and advantages of the .htaccess file you see when you run an Apache Web Server like ours. | ||
==What is a .htaccess file?== | ==What is a .htaccess file?== | ||
It is | It is Apache's directory-level configuration file (as opposed to httpd.conf, which is the main server configuration file) that provides the governing rules of how the web server operates. When it is placed in a particular directory, the rules in it apply to that directory and all the subdirectories thereof. | ||
Here is a [http://www.javascriptkit.com/howto/htaccess.shtml good tutorial] | Here is a [http://www.javascriptkit.com/howto/htaccess.shtml good tutorial] on the use and configuration of the .htaccess file. | ||
==What is a .htpasswd file?== | ==What is a .htpasswd file?== | ||
The .htpasswd file is a file used to store usernames and passwords for protected areas of a website that | The .htpasswd file is a file used to store usernames and passwords for protected areas of a website that use the .htaccess Protection. | ||
==Usage and Commands== | ==Usage and Commands== | ||
Line 15: | Line 13: | ||
===Change the Default Directory Index File=== | ===Change the Default Directory Index File=== | ||
It can be used to | It can be used to change the default index file, which is normally index.html, index.ext... to anything else, like foo.ext or whatever name/extension you prefer. To do this, use: | ||
<pre>DirectoryIndex foo.ext home.html home.php foo.php</pre> | <pre>DirectoryIndex foo.ext home.html home.php foo.php</pre> | ||
===Customizing Error Handling/Error Pages=== | ===Customizing Error Handling/Error Pages=== | ||
If you have ever wondered how people | If you have ever wondered how people change their 404, 500... error pages to something like lost.ext, then you will like this code in your .htaccess file: | ||
<pre> | <pre> | ||
<nowiki> | <nowiki> | ||
Line 26: | Line 24: | ||
</nowiki> | </nowiki> | ||
</pre> | </pre> | ||
Where [Error Number] is replaced with the error number, and [Error Document] is replaced with the path | Where [Error Number] is replaced with the error number, and [Error Document] is replaced with the path to the error document, which can be internal or external, as in: | ||
<pre>http://www.anothersite.com/foo.ext or /foo.ext</pre> | <pre>http://www.anothersite.com/foo.ext or /foo.ext</pre> | ||
===Server Generated URL Redirects=== | ===Server-Generated URL Redirects=== | ||
You moved or renamed a directory and you know people still have the old directory bookmarked so you want them to be redirected to the new directory, then you can use this code: | You moved or renamed a directory and you know people still have the old directory bookmarked so you want them to be redirected to the new directory, then you can use this code: | ||
<pre>Redirect [Trigger] [New Destination] | <pre>Redirect [Trigger] [New Destination] | ||
Line 36: | Line 34: | ||
===Limiting Access by Hostname/IP Address=== | ===Limiting Access by Hostname/IP Address=== | ||
Use this section of this article if you are | Use this section of this article if you are interested in blocking access to a file/folder on your server: | ||
<pre> | <pre> | ||
<Files admin.cgi> | <Files admin.cgi> | ||
Line 43: | Line 41: | ||
allow from 1.2.3.4 | allow from 1.2.3.4 | ||
</Files> | </Files> | ||
</pre> This example denies access to admin.cgi | </pre> This example denies access to admin.cgi for everyone but the user of the IP Address referred in ''1.2.3.4''. You can also use this for a folder; in that case you would replace admin.cgi with the name of the folder. If you are interested in using the Hostname rather than the IP then use: | ||
<pre> | <pre> | ||
<Files admin.cgi> | <Files admin.cgi> | ||
Line 51: | Line 49: | ||
</Files> | </Files> | ||
</pre> | </pre> | ||
You can also use it for your whole network to have access to it alone | You can also use it for your whole network to have access to it alone. Example: | ||
<pre> | <pre> | ||
# IP Number | # IP Number | ||
Line 66: | Line 64: | ||
</Files> | </Files> | ||
</pre> | </pre> | ||
Where ''192.168.123'' is your internal network IP and .networkdomain.com is your Hostname/Domain. You can also switch it to allow from ALL and deny from a list of IPs or Hostnames.Here is a | Where ''192.168.123'' is your internal network IP and .networkdomain.com is your Hostname/Domain. You can also switch it to allow from ALL and deny from a list of IPs or Hostnames. Here is a practical example for advanced users: | ||
<pre> | <pre> | ||
<Files [/path/filename]> | <Files [/path/filename]> | ||
Line 74: | Line 72: | ||
===Limiting Access by User=== | ===Limiting Access by User=== | ||
This part | This part shows the .htaccess/.htpasswd user login system which uses cookies. It is only partly secure because the session does not expire until all open browsers are closed, so do not use it on a site section that needs fool-proof security. Here is the code: | ||
<pre> | <pre> | ||
AuthType Basic | AuthType Basic | ||
Line 81: | Line 79: | ||
Require valid-user | Require valid-user | ||
</pre> | </pre> | ||
For this example you | For this example, you place a .htpasswd file in the path (/htpasswd/path/to/). In the .htpasswd file will be: <pre>[user]:[password]</pre> Normally you have to encrypt the password but if you are using [[The_Uniform_Server|The Uniform Server]], then you do not need to do that. You can also use this example to protect another directory by using just one .htaccess file: | ||
<pre> | <pre> | ||
<Directory /path/to/> | <Directory /path/to/> | ||
Line 90: | Line 88: | ||
</Directory> | </Directory> | ||
</pre> | </pre> | ||
If you | If you want to do this for just specific files, then use: | ||
<pre> | <pre> | ||
<Files /path/to/file.ext> | <Files /path/to/file.ext> | ||
Line 99: | Line 97: | ||
</Files> | </Files> | ||
</pre> | </pre> | ||
The ''Require'' statement is used to list valid users or groups of users | The ''Require'' statement is used to list valid users or groups of users. If you just want one .htpasswd file but want multiple protected areas, then you can use: | ||
<pre>Require user username1 username2 username3...</pre> | <pre>Require user username1 username2 username3...</pre> | ||
Or if you want to use it in groups then you can use: | Or if you want to use it in groups then you can use: | ||
<pre> | <pre> | ||
AuthGroupFile / | AuthGroupFile /htgroups/path/to/.htgroups | ||
Require group groupname1 groupname2 groupname3... | Require group groupname1 groupname2 groupname3... | ||
</pre> | </pre> | ||
Line 111: | Line 109: | ||
Groupname2: username1 username4 username5 .... | Groupname2: username1 username4 username5 .... | ||
</pre> | </pre> | ||
As you can see a username may be in as many | As you can see, a username may be in as many groups as you like while others may be in only one. | ||
[[Category: Apache Configuration]] |