Harvard University Extension School
Fall 2017
Course Web Site: http://cscie12.dce.harvard.edu/
Instructor email: david_heitmeyer@harvard.edu
Course staff email: cscie12@dce.harvard.edu
TLDs are managed by the Internet Assigned Numbers Authority (IANA)
Generic: .com
, .org
, .edu
, .gov
, etc.
Country codes: .ch
, .cn
, .de
, .uk
, .us
, etc.
A very short list of hosting companies as a place to start.
GET / HTTP/1.1
Host: www.whitehouse.gov
HTTP/1.1 200 OK
Content-Length: 107981
Content-Type: text/html; charset=utf-8
X-Drupal-Cache: HIT
P3P: CP="NON DSP COR ADM DEV IVA OTPi OUR LEG"
X-Age: 67
X-Cache-Hits: 9
X-Varnish: 805108045 805108024
X-AH-Environment: prod
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Link: <https://www.whitehouse.gov/sites/whitehouse.gov/files/images/fb_share_postcard.jpg>; rel="image_src",<https://www.whitehouse.gov/homepage>; rel="canonical",<https://www.whitehouse.gov/node/5596>; rel="shortlink"
X-Generator: Drupal 7 (http://drupal.org)
X-UA-Compatible: IE=edge,chrome=1
Content-Language: en
Strict-Transport-Security: max-age=3600;include_subdomains
ETag: "1429045100.642-1"
Date: Tue, 14 Apr 2015 22:25:54 GMT
Connection: keep-alive
<!DOCTYPE html>
<!-- truncated for example -->
Each requested resource is a separate, independent, request to the server -- it is a stateless protocol.
The complete list:
Solution: "Virtual Hosts"
Example: all of the following names map to 140.247.197.241
This is required for HTTP 1.1 requests.
HEAD /http/raspberry.gif HTTP/1.1
Host: cscie12.dce.harvard.edu
HTTP/1.1 200 OK
Date: Tue, 8 Apr 2015 20:23:14 GMT
Server: Apache/2.2 (Fedora)
Last-Modified: Wed, 06 Apr 2005 19:30:42 GMT
ETag: "461fb8-348c-a0f67c80"
Accept-Ranges: bytes
Content-Length: 13452
Connection: close
Content-Type: image/gif
Connection closed by foreign host.
From the HTTP/2 FAQ:
At a high level, HTTP/2:
httpd.conf
).htaccess
).htaccess
files.
.htaccess
file is read on a per request basis..htaccess
files apply to the directory that
contains the .htaccess
file and all its descendants.
Directives within the file,
/home/courses/j/h/jharvard/public_html/.htaccess
would apply to all files within and "under" the public_html directory for the user
jharvard.
Directives within the file,
/home/courses/j/h/jharvard/public_html/books/.htaccess
would apply to all files within and "under" the public_html/books
directory for the user jharvard.
500 Internal Server Error
:(
.htaccess
file, the most
likely cause of the problem is incorrect permissions and/or an error in the directive
syntax.
.htaccess
file are not set
correctly. Just like HTML and image files, the server must be able to read the
.htaccess
file. The simplest way to allow that is to make your
.htaccess
file readable by "other".cscie12students% pwd
/home/courses/j/h/jharvard/public_html
cscie12students% ls -l .htaccess
-rw------- 1 jharvard founder 349 Nov 27 00:03 .htaccess
cscie12students% chmod o+r .htaccess
cscie12students% ls -l ~/public_html/.htaccess
-rw----r-- 1 jharvard founder 349 Nov 27 00:03 .htaccess
.htaccess
file will result in a 500 Internal Server
Error. In addition, correct usage of a directive that is not allowed in the
.htaccess
file will result in a 500 status code.
Whether or not a directive is allowed depends upon the server configuration file
(httpd.conf; AllowOverride) and the directive itself..htaccess
files.
For example, the file corresponding to the URL,
http://cscie12.dce.harvard.edu/.htaccess exists and is readable by the Web
server, but if we try to follow the link, we get a 403 Forbidden
response.ls
command will not list files or directories that begin with a
'.' (dot). In order to see the .htaccess
file when you
do a directory listing, use the -a (all) option:Files
and
FilesMatch
can be used within .htaccess
files.
Examples:
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
Examples:
# deny access to any tilde backup files
<Files *~>
Order allow,deny
Deny from all
</Files>
:)
Local cache and proxy-server cache.
A request for the Apache Software Foundation logo (http://apache.org/img/asf_logo.png) that is part of loading
http://apache.org/foundation/
Initial request:
GET /img/asf_logo.png HTTP/1.1
Host: apache.org
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36
Referer: http://apache.org/foundation/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,ro;q=0.6
HTTP/1.1 200 OK
Date: Tue, 14 Apr 2015 22:40:52 GMT
Server: Apache/2.4.7 (Ubuntu)
Last-Modified: Tue, 14 Apr 2015 16:08:47 GMT
ETag: "751e-513b1721525d0"
Accept-Ranges: bytes
Content-Length: 29982
Cache-Control: max-age=3600
Expires: Tue, 14 Apr 2015 23:40:52 GMT
Keep-Alive: timeout=30, max=98
Connection: Keep-Alive
Content-Type: image/png
After expiration, if still located in local cache, browser will make a conditional request:
GET /img/asf_logo.png HTTP/1.1
Host: apache.org
Connection: keep-alive
Accept: image/webp,*/*;q=0.8
If-None-Match: "751e-513b1721525d0"
If-Modified-Since: Tue, 14 Apr 2015 16:08:47 GMT
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36
Referer: http://apache.org/foundation/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,ro;q=0.6
HTTP/1.1 304 Not Modified
Date: Tue, 14 Apr 2015 22:42:51 GMT
Server: Apache/2.4.7 (Ubuntu)
Connection: Keep-Alive
Keep-Alive: timeout=30, max=100
ETag: "751e-513b1721525d0"
Expires: Tue, 14 Apr 2015 23:42:51 GMT
Cache-Control: max-age=3600
.htaccess
ExpiresActive On
ExpiresByType text/html A3600
# HTML expires in 1 hour
ExpiresByType image/gif A2592000
# GIF expires in 30 days
ExpiresByType image/jpeg A2592000
# JPEG expires in 30 days
ExpiresByType image/png A2592000
# PNG expires in 30 days
# types not specified
ExpiresDefault "now plus 1 day"
# expires in 1 day
ExpiresActive On
ExpiresByType text/html M86400
# HTML expires 1 day after it was last modified
ExpiresDefault M86400
If you do not want your page cached, set these HTTP response headers:
Cache-control: no-cache
Pragma: no-cache
Expires: <set to now>
In .htaccess in Apache, this would translate to:
ExpiresDefault "now"
Header set Pragma "no-cache"
:)
mod_deflate compresses content before sending to web browser.
Simple use:
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
Harvard Summer School CSCI Course Listing
Apache Default "Not Found" 404 document:
"Not Found" 404 for Whitehouse
"Not Found" 404 for Whitehouse
.htaccess
ErrorDocument 401 /~jharvard/error/status401.html
ErrorDocument 403 /~jharvard/error/status403.html
ErrorDocument 404 /~jharvard/error/status404.html
Redirecting client requests can be very useful:
For cscie12.dce.harvard.edu
the .htaccess
file contains:
Redirect 302 /syllabus https://harvard.instructure.com/courses/1812/assignments/syllabus
mod_rewrite uses regular expressions to match on a pattern and rewrite incoming URLs to a new URL location.
.htaccess
If you use RewriteRule
from within an .htaccess
files, you must
use the RewriteBase
directive.
See: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
Context: Parks and Recreation class offered and how to easily link directly to the class
Park and Rec system:https://webtrac.littletonrec.com/wbwsc/webtrac.wsc/wbsearch.html
Link I can use with Rewrite rulehttp://littletontrack.org/lpr-303107
RewriteEngine On
RewriteBase /
RewriteRule ^lpr-(.*)$ https://webtrac.littletonrec.com/wbwsc/webtrac.wsc/wbsearch.html?per=10&xxsearch=yes&xxdispmap=no+&xxmulti-list=&xxmulti-lbls=&xxrowid=&xxmod=ar&xxactivitynumber=$1&xxage=&xxgrade=&xxkeyword=&xxkeywordoption=N&xxtype=&xxcategory=&xxsortoption=ActivityNumber&xxdisplayoption=D&xxsubmit=Search
Road Race Registration is done through a 3rd party service, SignMeUp
Redirect /registration https://www.signmeup.com/site/reg/register.aspx?fid=B42VRH7
Redirect /map http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=101999702593116464805.00046f1a27a9feb5aacaf&ll=42.52946,-71.485934&spn=0.018975,0.018239&z=15
Copyright © David Heitmeyer