├── README.md ├── favicon.ico ├── img ├── tern.jpg ├── sfepbadge.png ├── ternsquare.jpg ├── caroline-sig.jpeg ├── caroline-egypt.jpg ├── caroline-oncamel.jpg └── caroline-portrait.jpg ├── favicon-16x16.png ├── favicon-32x32.png ├── mstile-150x150.png ├── apple-touch-icon.png ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── robots.txt ├── update_from_git.cgi ├── browserconfig.xml ├── humans.txt ├── manifest.json ├── 404.html ├── css.css ├── safari-pinned-tab.svg ├── index.html └── .htaccess /README.md: -------------------------------------------------------------------------------- 1 | # wordsmith 2 | The Wordsmith website 3 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/favicon.ico -------------------------------------------------------------------------------- /img/tern.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/img/tern.jpg -------------------------------------------------------------------------------- /favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/favicon-16x16.png -------------------------------------------------------------------------------- /favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/favicon-32x32.png -------------------------------------------------------------------------------- /img/sfepbadge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/img/sfepbadge.png -------------------------------------------------------------------------------- /img/ternsquare.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/img/ternsquare.jpg -------------------------------------------------------------------------------- /mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/mstile-150x150.png -------------------------------------------------------------------------------- /apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/apple-touch-icon.png -------------------------------------------------------------------------------- /img/caroline-sig.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/img/caroline-sig.jpeg -------------------------------------------------------------------------------- /img/caroline-egypt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/img/caroline-egypt.jpg -------------------------------------------------------------------------------- /img/caroline-oncamel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/img/caroline-oncamel.jpg -------------------------------------------------------------------------------- /android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/android-chrome-192x192.png -------------------------------------------------------------------------------- /android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/android-chrome-512x512.png -------------------------------------------------------------------------------- /img/caroline-portrait.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chozabu/wordsmith/master/img/caroline-portrait.jpg -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | # www.robotstxt.org/ 2 | 3 | # Allow crawling of all content 4 | User-agent: * 5 | Disallow: 6 | -------------------------------------------------------------------------------- /update_from_git.cgi: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Content-type: text/html" 4 | echo 5 | echo "Hello, world!" 6 | git pull 7 | 8 | -------------------------------------------------------------------------------- /browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #36a3e2 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /humans.txt: -------------------------------------------------------------------------------- 1 | # humanstxt.org/ 2 | # The humans responsible & technology colophon 3 | 4 | # TEAM 5 | 6 | Chris -- Structure/init/assets 7 | Henry -- Edit/review/ux 8 | Rosario -- Clever tech stuff 9 | 10 | # THANKS 11 | 12 | Boostrap team 13 | 14 | # TECHNOLOGY COLOPHON 15 | 16 | HTML5, CSS3 17 | jQuery, Modernizr 18 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "icons": [ 4 | { 5 | "src": "/android-chrome-192x192.png", 6 | "sizes": "192x192", 7 | "type": "image/png" 8 | }, 9 | { 10 | "src": "/android-chrome-512x512.png", 11 | "sizes": "512x512", 12 | "type": "image/png" 13 | } 14 | ], 15 | "theme_color": "#ffffff", 16 | "background_color": "#ffffff", 17 | "display": "standalone" 18 | } -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Page Not Found 6 | 7 | 54 | 55 | 56 |

Page Not Found

57 |

Sorry, but the page you were trying to view does not exist.

58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /css.css: -------------------------------------------------------------------------------- 1 | /* general */ 2 | 3 | body { 4 | /* padding-top: 150px; */ 5 | } 6 | 7 | .container { 8 | max-width: 756px; 9 | } 10 | 11 | .shadow { 12 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.4); 13 | } 14 | 15 | .shadow-down { 16 | box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08); 17 | } 18 | 19 | .text-shadow { 20 | text-shadow: 0 1px 2px rgba(0, 0, 0, 0.20); 21 | } 22 | 23 | .section { 24 | padding-top: 80px; 25 | } 26 | 27 | @media (min-width: 768px) { 28 | .section { 29 | padding-top: 80px; 30 | } 31 | } 32 | 33 | .suave { 34 | border-top: 1px solid #E5E5E5; 35 | border-bottom: 1px solid #E5E5E5; 36 | } 37 | 38 | .suave-dark { 39 | border-top: 1px solid #2F3138; 40 | border-bottom: 1px solid #2F3138; 41 | } 42 | 43 | /* colors */ 44 | 45 | .bg-brand-black { 46 | background-color: #354249; 47 | } 48 | 49 | .bg-brand-dark { 50 | background-color: #0075BA; 51 | } 52 | 53 | .bg-brand { 54 | background-color: #1E91D6; 55 | } 56 | 57 | .bg-brand-light { 58 | background-color: #36A3E2; 59 | } 60 | 61 | .bg-brand-white { 62 | background-color: #DDF2FF; 63 | } 64 | 65 | .text-brand { 66 | color: #1E91D6; 67 | } 68 | 69 | /* fonts */ 70 | .fancy-font { 71 | font-family: 'Eagle Lake', cursive; 72 | } 73 | 74 | /* navbar */ 75 | 76 | .flg { 77 | height: 1rem; 78 | } 79 | 80 | .flg-main { 81 | height: 1.5rem; 82 | } 83 | 84 | .navbar-nav { 85 | /* font-size: 1.2rem; */ 86 | /* text-transform: uppercase; */ 87 | } 88 | 89 | /* home */ 90 | 91 | .hero { 92 | padding-top: 50px; 93 | } 94 | 95 | @media (min-width: 576px;) { 96 | .hero { 97 | padding-top: 80px; 98 | } 99 | } 100 | 101 | .hero-text { 102 | font-weight: 300; 103 | font-size: 2.2rem; 104 | } 105 | 106 | @media (min-width: 370px) { 107 | .hero-text { 108 | font-size: 2.6rem; 109 | } 110 | } 111 | 112 | @media (min-width: 768px) { 113 | .hero-text { 114 | font-size: 4rem; 115 | } 116 | } 117 | 118 | .hero-image { 119 | width: 30vw; 120 | max-width: 400px; 121 | min-width: 200px; 122 | } 123 | 124 | /* contact */ 125 | .img-sfep { 126 | max-width: 250px; 127 | } 128 | 129 | @media (max-width: 768px) { 130 | .splitter { 131 | border-top: 1px solid white; 132 | } 133 | } 134 | 135 | /* Bootstrap button default */ 136 | 137 | /* .btn-primary { 138 | color: #fff; 139 | background-color: #007bff; 140 | border-color: #007bff; 141 | } 142 | 143 | .btn-primary:hover { 144 | color: #fff; 145 | background-color: #0069d9; 146 | border-color: #0062cc; 147 | } 148 | 149 | .btn-primary:focus, .btn-primary.focus { 150 | box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5); 151 | } 152 | 153 | .btn-primary.disabled, .btn-primary:disabled { 154 | background-color: #007bff; 155 | border-color: #007bff; 156 | } 157 | 158 | .btn-primary:active, .btn-primary.active, 159 | .show > .btn-primary.dropdown-toggle { 160 | background-color: #0069d9; 161 | background-image: none; 162 | border-color: #0062cc; 163 | } */ 164 | 165 | 166 | /* my button styles */ 167 | 168 | .btn-brand { 169 | color: #FFFFFF; 170 | background-color: #1E91D6; 171 | border-color: #1E91D6; 172 | } 173 | 174 | .btn-brand:hover, 175 | .btn-brand:focus, 176 | .btn-brand:active, 177 | .btn-brand.active, 178 | .open .dropdown-toggle.btn-brand { 179 | color: #FFFFFF; 180 | background-color: #0075BA; 181 | border-color: #1E91D6; 182 | } 183 | 184 | .btn-brand:active, 185 | .btn-brand.active, 186 | .open .dropdown-toggle.btn-brand { 187 | background-image: none; 188 | } 189 | 190 | .btn-brand.disabled, 191 | .btn-brand[disabled], 192 | fieldset[disabled] .btn-brand, 193 | .btn-brand.disabled:hover, 194 | .btn-brand[disabled]:hover, 195 | fieldset[disabled] .btn-brand:hover, 196 | .btn-brand.disabled:focus, 197 | .btn-brand[disabled]:focus, 198 | fieldset[disabled] .btn-brand:focus, 199 | .btn-brand.disabled:active, 200 | .btn-brand[disabled]:active, 201 | fieldset[disabled] .btn-brand:active, 202 | .btn-brand.disabled.active, 203 | .btn-brand[disabled].active, 204 | fieldset[disabled] .btn-brand.active { 205 | background-color: #1E91D6; 206 | border-color: #1E91D6; 207 | } 208 | 209 | .btn-brand .badge { 210 | color: #1E91D6; 211 | background-color: #FFFFFF; 212 | } 213 | 214 | /* scrollup */ 215 | 216 | .scrollup { 217 | width: 44px; 218 | height: 48px; 219 | position: fixed; 220 | bottom: 5%; 221 | right: 8%; 222 | display: none; 223 | background-color: blue; 224 | font-size: 30px; 225 | line-height: 48px; 226 | text-align: center; 227 | text-shadow: 0 0 9px #000; 228 | -webkit-transition: all .3s; 229 | transition: all .3s; 230 | z-index: 10; 231 | } -------------------------------------------------------------------------------- /safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 14 | 16 | 83 | 85 | 88 | 89 | 90 | 115 | 117 | 119 | 120 | 122 | 124 | 126 | 128 | 130 | 132 | 137 | 139 | 142 | 144 | 146 | 148 | 152 | 154 | 156 | 157 | 159 | 161 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | The-Wordsmith 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 89 | 90 | 91 |
92 |
93 |
94 |
95 |
96 |

Finely crafted words

97 | 98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |

Looking for a way to polish up your text?

108 |

I'm Caroline Petherick - The Wordsmith.
A text management professional with decades of experience.

109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |

Written text ... just a collection of words. Yet, like simple bricks, words can create artefacts of great power, beauty and influence. For instance:

118 |
119 |
120 |

May I deal with honour. May I act with courage. May I achieve humility.

121 |
Dick Francis
journalist / champion jockey / thriller writer
122 |
123 |
124 |
125 |

Sticks and stones may break our bones, but words will break our hearts.

126 |
Robert Fulghum
author / philosopher / grandparent
127 |
128 |
129 |

Moving and memorable? Whatever you write - whether it's on computer programming, eternal life or anything in between - can be just as inspiring and motivating. But to get the response you expect from your readers, you need someone to check it who doesn't know yet what's in your head.

130 |

This is where I come in; I'm your guinea-pig reader. I will help create a clearer communication channel between you and your audience. I'm highly experienced - I've worked as a wordsmith since the early nineties - so you get a swift, efficient and cost-effective service.

131 |
132 |
133 |
134 |
135 | 142 |

Example services:

143 |
144 |
145 |
146 |
147 |

Get your book edited

148 |

Whether it's printed or an ebook, a novel or a textbook, I can handle it from start to finish.

149 | More info 150 |
151 |
152 |
153 |
154 |
155 |
156 |

Get your thesis or dissertation proofread

157 |

I'm experienced at ensuring academic texts are just perfect, and ready to impress.

158 | Sounds good! 159 |
160 |
161 |
162 |
163 |
164 |
165 |

Maximise respect for your product or service

166 |

Having perfect English is one of the best ways to ensure respect for your business.

167 | Intriguing! 168 |
169 |
170 |
171 |
172 |
173 |
174 |

Enhance your company image

175 |

Eloquent language takes your company image to the next level, making you stand out from competitors.

176 | Why not? 177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 | 186 | 187 |
188 |
189 |
190 |
191 |

Text Management

192 |

Do you want to produce effective conference transcriptions, information booklets and leaflets, instruction manuals, fact sheets, newsletters, business plans?

193 |

For design and accounting work it's good business sense to employ specialists. But when it comes to getting things down in writing, you've got a computer - so, why pay someone?

194 |

A computer can only do so much to help. It can't tell you:

195 |
    196 |
  • that the content needs rearranging to end up in logical order 197 |
  • 198 |
  • whether your vocabulary and writing style is right for your readers 199 |
  • 200 |
  • about any gender, class or cultural bias in your text 201 |
  • 202 |
  • whether the typeface and layout of the text make it easy or hard to read 203 |
  • 204 |
  • that some information crucial to understanding has been left out, or 205 |
  • 206 |
  • that you've typed 'now' instead of 'not' - such a tiny slip ... such potentially catastrophic consequences!
  • 207 |
208 |

If you've already drafted a text, I can approach it from the reader's perspective - very different from the way that you, the writer, view it. My job is to make your publication communicate your message clearly, checking that:

209 |
    210 |
  • it's in the kind of English that's right for your readers
  • 211 |
  • information is included that's neededfor full understanding
  • 212 |
  • the text follows a logical order
  • 213 |
  • contents and referencing are used if required
  • 214 |
  • the text has good layout and a pleasing appearance ...
  • 215 |
216 |

and there are around another 20 editing/proofreading tasks that will maximise the effectiveness of your publication - ask me for the list.

217 |

Good writing enhances your image, so readers will be impressed; your publication will become a springboard to help create more and better business for you.

218 |
219 |
220 |
221 |
222 | 223 | 224 |
225 |
226 |
227 |
228 |

Proofreading

229 |

Are you drafting a business text, and want it checked over?

230 |

I'm a very experienced editor / proofreader, and have spent a sizeable chunk of my adult life in the commercial world. So I can achieve anything from a quick polish to a thorough makeover, depending on your needs. Click on Text Management in the menu at left.

231 |

Are you writing a book? If so, please click on Editing in the menu at left.

232 |

Are you writing a thesis, dissertation or essay?

233 |

Academic writing must be your own work. But what if your first language is not English? Or if you have serious difficulty getting things down in writing?

234 |

Most universities and colleges allow you to have your text checked by an English proofreader. This helps ensure your meaning is clear and that the text is written in academic British English.

235 |

Cost?From £15 to £25 per 1000 words. (For a more exact price, see 'What's the next step?' below.)

236 |

Time? I can normally proofread about 15,000 words in 2 working days, and about 40,000 words in a working week and so on. But you'll need to check that I have space in my schedule. The more advance notice you give me, the more likely I can work for you when you need me.

237 |

Please also give yourself a few days after I've returned the completed text to you. You will need some time to check the changes I've made, before you submit your work for assessment and marking.

238 |

What's the next step?

239 |

Please email me, to:

240 |

1) tell me the title, subject and word limit of your text,

241 |

2) tell me your submission deadline, and

242 |

3) send me a 500-word sample of the text.

I will tell you whether I am competent to work on the subject matter and whether I can fit the work into my schedule. If both those conditions are met, I will work on your sample for free, and I will normally return it to you within 24 hours, with an exact price per 1000 words. 243 |

So before you go any further:

a) you will know that we can meet your deadline 244 |

b) you can see what kind of work I would do for you, and 245 |

c) you will know exactly how much the job will cost you. 246 |

247 |

Okay?

248 |
249 |
250 |
251 |
252 | 253 | 254 |
255 |
256 |
257 |
258 |

Editing

259 |

If you're a non-fiction book publisher, you might like to contact me about my service; I have worked for the last few years on a series of books ranging from maritime history to diplomatic protocol to natural history, produced by Whittles Publishing, a prestigious private house. Dr Keith Whittles says, 'We have been working with Caroline for several years and across a broad range of projects and subjects. It is a pleasure to work with her - she is efficient, accurate, knowledgeable, diplomatic and very understanding.' (full text on the Testimonials page)

260 |

Also, I worked on Lloyd's Register's magisterial history and maritime technology books: 'Caroline was a joy to work with on our projects. She immediately answered our cry for help and couldn’t have been more helpful throughout our time of working with her. We found Caroline a fast, accurate and efficient editor.' (full text on the Testimonials page).

261 |

If you produce TEFL teacher-trainer books, you will find that my long experience in this field will help produce texts that are relevant and easy to understand.

262 |

I have also worked on educational texts - course books and teacher books - at primary and secondary levels, and am fully aware of the need to achieve coherence, cohesion - and correctness! -throughout.

263 |

Or perhaps you're a creative writer who wants to ensure your work is as good as it can be before it goes to an agent, a publisher or the public. The many self-publishing writers I have worked with have - in some cases rather to their surprise - greatly enjoyed the process of checking their work before publishing. One of my recent authors said to her publisher: 'Caroline and I have had SUCH fun getting the m/s sorted! I must say, she has been absolutely wonderful to work with.'

264 |

I have been working as an editor since 1993. My services range from copy-editing and rewriting to structural editing and developmental editing (coordinating an entire project from first drafts, then incorporating input from authors, consultants and editors, to produce a designer-ready text).

265 | 266 |

I am an Advanced Professional Member of the Society for Editors and Proofreaders - the highest possible grade - and I continue to update my training to keep abreast the fast-moving world of IT and the subtle changes in language that reflect our developing culture. See my directory entry at http://www.sfep.org.uk/directory/caroline-petherick-wordsmith.

267 |

I have an Open University degree in linguistics, Latin + Ancient Greek, and astronomy + cosmology. My activities include crewing a Tall Ship, piloting my own microlight and converting a barn on our seaside acreage into an offgrid holiday cottage, so visitors can find out what fun - and how easy! - it can be to live sustainably (see www.windsworth.org.uk). So my knowledge base is eclectic, helping ensure that any text I work on for you will be well received by your readers.

268 |

Contact me now to find out how my editing service can help your text communicate your message clearly and effectively to your readers.

269 |
270 |
271 |
272 |
273 | 274 | 275 |
276 |
277 |
278 |
279 |

Testimonials

280 |

Current clients include:

281 |

Whittles Publishing (maritime), HarperCollins (secondary school spelling and maths books), AD Skin Synergy, and Bott Automotive Vehicle Solutions.

282 |

Past clients include:

283 |

Lloyd's Register, Sheffield Hallam University (secondary physics), Palgrave Macmillan (finance and economics), Lovely Little Books, Helbling Languages, Micus (Duesseldorf), IFS, SECTA, BCCCA, ABTT, a bunch of academics on topics such as maritime history and rainforest rubber, a well-known company historian, and writers of semi-fictional books on, for example, Palestine, the Irish troubles, merchant shipping in the Far East. 284 |

Caroline was a joy to work with on our projects. She immediately answered our cry for help and couldn’t have been more helpful throughout our time of working with her. We found Caroline a fast, accurate and efficient editor with a keen eye for attention to detail who could work to extremely tight deadlines, always delivering when she said she would. Caroline has meticulous editing and proofreading skills and is willing to learn and research the subject matter, checking facts and questioning material that needs clarity and providing suggestions based upon her expertise. All of her suggestions were well thought out and pertinent. We would have no hesitation in using Caroline for our future projects. 285 | Barbara Jones Curator of Maritime History and Education, Lloyd’s Register.

286 |

We have been working with Caroline for several years and across a broad range of projects and subjects. It is a pleasure to work with her - she is efficient, accurate, knowledgeable, diplomatic and very understanding. She handles authors beautifully, with their own expectations and foibles, and we have received compliments from several who have praised her work, her understanding and the improvements she has brought to their manuscript. I have worked with editors for 40 years and I can say wholeheartedly and with objectivity that Caroline is one of the very best. I am constantly amazed by her knowledge and skills and appreciate her sense of humour - it all helps the editing flow more smoothly!
Dr Keith Whittles, Whittles Publishing

287 |

Caroline, I totally trust your excellent work! Cheers, Herbert.
Dr Herbert Puchta, Professor of English at the Teacher Training University in Austria

288 |

Ah... proper sentences that make sense! Exactly what I want. You've done a wonderful job on this.
Andrew Pilkington

289 |
290 |
291 |
292 |
293 | 294 | 295 |
296 |
297 |
298 |
299 |

About Me

300 | Since 1993 I've created and contributed to a wide variety of texts, from leaflets and newsletters to weighty multi-author tomes. 301 |

My qualifications relevant to this profession include:

302 |
    303 |
  • Advanced Professional Membership of the Society for Editors and Proofreaders; the highest grade currently achievable, hence a testimony of high quality (and ongoing) training, valuable experience and proven reliability
  • 304 |
  • Trinity Cert. TESOL, teacher of English as a Foreign Language 305 |
  • 306 |
  • Dip ELS (Open) - Diploma of English Language Studies 307 |
  • 308 |
  • Open University degree in linguistics, Ancient Greek   Latin, and astronomy/cosmology. 309 |
  • 310 |
311 | My business background covers the UK and Hong Kong, including PR work for J Walter Thompson, and 10 years running a special interest travel company (classical music festivals, natural history, fine arts and architecture, and fine food and wine).And just so's there's no risk of you thinking I'm all work and no play, I'm also involved in 312 |
    313 |
  • Car driving - I became a member of the IAM and I sometimes have fun in a skid pan, too. Drives etched on my memory include (1) nipping over the pass from La Paz down for lunch in the steamy heat of the rainforest in the mid-70s (along what I later learnt was the Camino de La Muerte) in a beat-up rented Beetle; and (2) penetrating the fastnesses of the Zhongyang Range in ... a beat-up rented Beetle. What next? The Eurasian Pole of Inaccessibility via the Karakoram Highway, and back again via Mt Kailas.
  • 314 |
  • Scuba diving - I'm a PADI Open Water Diver and have dived the Channel, the Med and the Red Sea.
  • 315 |
  • Winter sports - I've spent winters abroad skiing in Switzerland and France, I've made a risible attempt at snowboarding, and I spent time in the Canadian Rockies on a snowmobile and helping train a dogsled team.
  • 316 |
  • Aviation - I hold a PPL, with IMC and Night Ratings. I have also flown a glider, a hang-glider and a helicopter, and have gone hot-air ballooning. I owned a Thruster microlight, but sold it when the adrenalin levels caused by its overstressed two-stroke engine went over the top. Next stop - when the price drops - a Calidus autogyro, to fly from home. Meanwhile it's a session or two at the Virtual Jet Centre in Devon. (Highly recommended as a present for any would-be pilot in your family.
  • 317 |
  • Martial arts - judo many years ago, then ki-aikido, and now the equally powerful, but less physically demanding, t'ai chi.
  • 318 |
  • Sailing, including: 319 |
      320 |
    • restoring and sailing a two-mast, gaff-rig traditional wooden boat
    • 321 |
    • windsurfing - wobble'n'splash
    • 322 |
    • yachting – Solent Points, Cowes Week and Kiel week racing and cruising, DoT Yachtmaster, Short-range Radio Operator
    • 323 |
    • Tall Ship - crewing the STA's Prince William in the Azores.
    • 324 |
    325 |
  • 326 |
  • Opera - for several years I went to the gods in Covent Garden once or twice a week. I've also been to many festival performances at Bayreuth, Salzburg, Glyndebourne etc.
  • 327 |
  • More arts - I'm the Discovery Days organiser for Liskeard Arts, my local NADFAS group; and I'm the projectionist for Cinema by the Sea.
  • 328 |
  • Family- I'm mum to four young adults who are now scattered across the globe, startling the locals no doubt. Feeling guilty about thus increasing the population, I've told them that if they really want to have children, then they'll need to be prepared for a thoroughly subversive granny person.
  • 329 |
  • Weird and wonderful - I enquire into healing and dowsing.
  • 330 |
  • Travel - I've travelled widely overland and by sea in Europe, Asia (inc. Trans-Siberian), Africa, and North and South America. 331 |
      332 |
    • For nearly 10 years I ran an upmarket travel company (art   architecture, wildlife, gastronomy, classical music festivals), so I travelled extensively on business.
    • 333 |
    • In addition, I've stayed long-term in these countries: Iceland, Ireland, Scotland, France, Germany, Gozo, Switzerland, Italy, Spain, Portugal (inc Madeira and Azores); Pakistan, India, Nepal, USSR (inc Trans-Siberian), Hong Kong, Japan, Peru.
    • 334 |
    • And I've travelled overland in: Finland, Sweden, Denmark, the Netherlands, Belgium, Andorra, Yugoslavia, Greece; Turkey, Egypt, Iran, Afghanistan, Thailand, Malaysia, Singapore, Indonesia, Macao, China, Taiwan; Morocco, Egypt, Zimbabwe; Canada (inc Trans-Canadian), Colombia, Bolivia, and Venezuela.
    • 335 |
    336 |
  • 337 |
  • Languages - I had excellent French, Italian and German, and I still have a conversational knowledge of those languages, plus 'get-by' knowledge of the languages of many of the countries I've visited.
  • 338 |
  • Back at home? I'm lucky enough to live on a half-mile tranche of Cornish coast - and I've earned DEFRA's HLS award. This helps me maximise biodiversity, thus leave this small but perfectly formed part of the world in better heart than I found it
  • 339 |
340 |

There are reasons why I've listed all these things - first of all I'm quite proud of them, and second if your text has anything to do with any of them, you can expect an extra good result.

341 |
342 |
343 |
344 |
345 | 346 | 347 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 400 | 401 | 402 | 414 | 415 | 416 | 417 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | # Apache Server Configs v2.11.0 | MIT License 2 | # https://github.com/h5bp/server-configs-apache 3 | 4 | # (!) Using `.htaccess` files slows down Apache, therefore, if you have 5 | # access to the main server configuration file (which is usually called 6 | # `httpd.conf`), you should add this logic there. 7 | # 8 | # https://httpd.apache.org/docs/current/howto/htaccess.html. 9 | 10 | # ###################################################################### 11 | # # CROSS-ORIGIN # 12 | # ###################################################################### 13 | 14 | # ---------------------------------------------------------------------- 15 | # | Cross-origin requests | 16 | # ---------------------------------------------------------------------- 17 | 18 | # Allow cross-origin requests. 19 | # 20 | # https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS 21 | # http://enable-cors.org/ 22 | # http://www.w3.org/TR/cors/ 23 | 24 | # 25 | # Header set Access-Control-Allow-Origin "*" 26 | # 27 | 28 | # ---------------------------------------------------------------------- 29 | # | Cross-origin images | 30 | # ---------------------------------------------------------------------- 31 | 32 | # Send the CORS header for images when browsers request it. 33 | # 34 | # https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image 35 | # https://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html 36 | 37 | 38 | 39 | 40 | SetEnvIf Origin ":" IS_CORS 41 | Header set Access-Control-Allow-Origin "*" env=IS_CORS 42 | 43 | 44 | 45 | 46 | # ---------------------------------------------------------------------- 47 | # | Cross-origin web fonts | 48 | # ---------------------------------------------------------------------- 49 | 50 | # Allow cross-origin access to web fonts. 51 | 52 | 53 | 54 | Header set Access-Control-Allow-Origin "*" 55 | 56 | 57 | 58 | # ---------------------------------------------------------------------- 59 | # | Cross-origin resource timing | 60 | # ---------------------------------------------------------------------- 61 | 62 | # Allow cross-origin access to the timing information for all resources. 63 | # 64 | # If a resource isn't served with a `Timing-Allow-Origin` header that 65 | # would allow its timing information to be shared with the document, 66 | # some of the attributes of the `PerformanceResourceTiming` object will 67 | # be set to zero. 68 | # 69 | # http://www.w3.org/TR/resource-timing/ 70 | # http://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/ 71 | 72 | # 73 | # Header set Timing-Allow-Origin: "*" 74 | # 75 | 76 | 77 | # ###################################################################### 78 | # # ERRORS # 79 | # ###################################################################### 80 | 81 | # ---------------------------------------------------------------------- 82 | # | Custom error messages/pages | 83 | # ---------------------------------------------------------------------- 84 | 85 | # Customize what Apache returns to the client in case of an error. 86 | # https://httpd.apache.org/docs/current/mod/core.html#errordocument 87 | 88 | ErrorDocument 404 /404.html 89 | 90 | # ---------------------------------------------------------------------- 91 | # | Error prevention | 92 | # ---------------------------------------------------------------------- 93 | 94 | # Disable the pattern matching based on filenames. 95 | # 96 | # This setting prevents Apache from returning a 404 error as the result 97 | # of a rewrite when the directory with the same name does not exist. 98 | # 99 | # https://httpd.apache.org/docs/current/content-negotiation.html#multiviews 100 | 101 | Options -MultiViews 102 | 103 | 104 | # ###################################################################### 105 | # # INTERNET EXPLORER # 106 | # ###################################################################### 107 | 108 | # ---------------------------------------------------------------------- 109 | # | Document modes | 110 | # ---------------------------------------------------------------------- 111 | 112 | # Force Internet Explorer 8/9/10 to render pages in the highest mode 113 | # available in the various cases when it may not. 114 | # 115 | # https://hsivonen.fi/doctype/#ie8 116 | # 117 | # (!) Starting with Internet Explorer 11, document modes are deprecated. 118 | # If your business still relies on older web apps and services that were 119 | # designed for older versions of Internet Explorer, you might want to 120 | # consider enabling `Enterprise Mode` throughout your company. 121 | # 122 | # http://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode 123 | # http://blogs.msdn.com/b/ie/archive/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11.aspx 124 | 125 | 126 | Header set X-UA-Compatible "IE=edge" 127 | # `mod_headers` cannot match based on the content-type, however, 128 | # the `X-UA-Compatible` response header should be send only for 129 | # HTML documents and not for the other resources. 130 | 131 | Header unset X-UA-Compatible 132 | 133 | 134 | 135 | # ---------------------------------------------------------------------- 136 | # | Iframes cookies | 137 | # ---------------------------------------------------------------------- 138 | 139 | # Allow cookies to be set from iframes in Internet Explorer. 140 | # 141 | # http://msdn.microsoft.com/en-us/library/ms537343.aspx 142 | # http://www.w3.org/TR/2000/CR-P3P-20001215/ 143 | 144 | # 145 | # Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"" 146 | # 147 | 148 | 149 | # ###################################################################### 150 | # # MEDIA TYPES AND CHARACTER ENCODINGS # 151 | # ###################################################################### 152 | 153 | # ---------------------------------------------------------------------- 154 | # | Media types | 155 | # ---------------------------------------------------------------------- 156 | 157 | # Serve resources with the proper media types (f.k.a. MIME types). 158 | # 159 | # https://www.iana.org/assignments/media-types/media-types.xhtml 160 | # https://httpd.apache.org/docs/current/mod/mod_mime.html#addtype 161 | 162 | 163 | 164 | # Data interchange 165 | 166 | AddType application/json json map topojson 167 | AddType application/ld+json jsonld 168 | AddType application/vnd.geo+json geojson 169 | AddType application/xml atom rdf rss xml 170 | 171 | 172 | # JavaScript 173 | 174 | # Normalize to standard type. 175 | # https://tools.ietf.org/html/rfc4329#section-7.2 176 | 177 | AddType application/javascript js 178 | 179 | 180 | # Manifest files 181 | 182 | # If you are providing a web application manifest file (see 183 | # the specification: https://w3c.github.io/manifest/), it is 184 | # recommended that you serve it with the `application/manifest+json` 185 | # media type. 186 | # 187 | # Because the web application manifest file doesn't have its 188 | # own unique file extension, you can set its media type either 189 | # by matching: 190 | # 191 | # 1) the exact location of the file (this can be done using a 192 | # directive such as ``, but it will NOT work in 193 | # the `.htaccess` file, so you will have to do it in the main 194 | # server configuration file or inside of a `` 195 | # container) 196 | # 197 | # e.g.: 198 | # 199 | # 200 | # AddType application/manifest+json json 201 | # 202 | # 203 | # 2) the filename (this can be problematic as you will need to 204 | # ensure that you don't have any other file with the same name 205 | # as the one you gave to your web application manifest file) 206 | # 207 | # e.g.: 208 | # 209 | # 210 | # AddType application/manifest+json json 211 | # 212 | 213 | AddType application/x-web-app-manifest+json webapp 214 | AddType text/cache-manifest appcache manifest 215 | 216 | 217 | # Media files 218 | 219 | AddType audio/mp4 f4a f4b m4a 220 | AddType audio/ogg oga ogg opus 221 | AddType image/bmp bmp 222 | AddType image/webp webp 223 | AddType video/mp4 f4v f4p m4v mp4 224 | AddType video/ogg ogv 225 | AddType video/webm webm 226 | AddType video/x-flv flv 227 | AddType image/svg+xml svg svgz 228 | 229 | # Serving `.ico` image files with a different media type 230 | # prevents Internet Explorer from displaying then as images: 231 | # https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee 232 | 233 | AddType image/x-icon cur ico 234 | 235 | 236 | # Web fonts 237 | 238 | AddType application/font-woff woff 239 | AddType application/font-woff2 woff2 240 | AddType application/vnd.ms-fontobject eot 241 | 242 | # Browsers usually ignore the font media types and simply sniff 243 | # the bytes to figure out the font type. 244 | # https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern 245 | # 246 | # However, Blink and WebKit based browsers will show a warning 247 | # in the console if the following font types are served with any 248 | # other media types. 249 | 250 | AddType application/x-font-ttf ttc ttf 251 | AddType font/opentype otf 252 | 253 | 254 | # Other 255 | 256 | AddType application/octet-stream safariextz 257 | AddType application/x-bb-appworld bbaw 258 | AddType application/x-chrome-extension crx 259 | AddType application/x-opera-extension oex 260 | AddType application/x-xpinstall xpi 261 | AddType text/vcard vcard vcf 262 | AddType text/vnd.rim.location.xloc xloc 263 | AddType text/vtt vtt 264 | AddType text/x-component htc 265 | 266 | 267 | 268 | # ---------------------------------------------------------------------- 269 | # | Character encodings | 270 | # ---------------------------------------------------------------------- 271 | 272 | # Serve all resources labeled as `text/html` or `text/plain` 273 | # with the media type `charset` parameter set to `UTF-8`. 274 | # 275 | # https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset 276 | 277 | AddDefaultCharset utf-8 278 | 279 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 280 | 281 | # Serve the following file types with the media type `charset` 282 | # parameter set to `UTF-8`. 283 | # 284 | # https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset 285 | 286 | 287 | AddCharset utf-8 .atom \ 288 | .bbaw \ 289 | .css \ 290 | .geojson \ 291 | .js \ 292 | .json \ 293 | .jsonld \ 294 | .rdf \ 295 | .rss \ 296 | .topojson \ 297 | .vtt \ 298 | .webapp \ 299 | .xloc \ 300 | .xml 301 | 302 | 303 | 304 | # ###################################################################### 305 | # # REWRITES # 306 | # ###################################################################### 307 | 308 | # ---------------------------------------------------------------------- 309 | # | Rewrite engine | 310 | # ---------------------------------------------------------------------- 311 | 312 | # (1) Turn on the rewrite engine (this is necessary in order for 313 | # the `RewriteRule` directives to work). 314 | # 315 | # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine 316 | # 317 | # (2) Enable the `FollowSymLinks` option if it isn't already. 318 | # 319 | # https://httpd.apache.org/docs/current/mod/core.html#options 320 | # 321 | # (3) If your web host doesn't allow the `FollowSymlinks` option, 322 | # you need to comment it out or remove it, and then uncomment 323 | # the `Options +SymLinksIfOwnerMatch` line (4), but be aware 324 | # of the performance impact. 325 | # 326 | # https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks 327 | # 328 | # (4) Some cloud hosting services will require you set `RewriteBase`. 329 | # 330 | # http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site 331 | # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase 332 | # 333 | # (5) Depending on how your server is set up, you may also need to 334 | # use the `RewriteOptions` directive to enable some options for 335 | # the rewrite engine. 336 | # 337 | # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions 338 | 339 | 340 | 341 | # (1) 342 | RewriteEngine On 343 | 344 | # (2) 345 | Options +FollowSymlinks 346 | 347 | # (3) 348 | # Options +SymLinksIfOwnerMatch 349 | 350 | # (4) 351 | # RewriteBase / 352 | 353 | # (5) 354 | # RewriteOptions 355 | 356 | 357 | 358 | # ---------------------------------------------------------------------- 359 | # | Forcing `https://` | 360 | # ---------------------------------------------------------------------- 361 | 362 | # Redirect from the `http://` to the `https://` version of the URL. 363 | # https://wiki.apache.org/httpd/RewriteHTTPToHTTPS 364 | 365 | 366 | RewriteEngine On 367 | RewriteCond %{HTTPS} !=on 368 | RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 369 | 370 | 371 | # ---------------------------------------------------------------------- 372 | # | Suppressing / Forcing the `www.` at the beginning of URLs | 373 | # ---------------------------------------------------------------------- 374 | 375 | # The same content should never be available under two different 376 | # URLs, especially not with and without `www.` at the beginning. 377 | # This can cause SEO problems (duplicate content), and therefore, 378 | # you should choose one of the alternatives and redirect the other 379 | # one. 380 | # 381 | # By default `Option 1` (no `www.`) is activated. 382 | # http://no-www.org/faq.php?q=class_b 383 | # 384 | # If you would prefer to use `Option 2`, just comment out all the 385 | # lines from `Option 1` and uncomment the ones from `Option 2`. 386 | # 387 | # (!) NEVER USE BOTH RULES AT THE SAME TIME! 388 | 389 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 390 | 391 | # Option 1: rewrite www.example.com → example.com 392 | 393 | 394 | RewriteEngine On 395 | RewriteCond %{HTTPS} !=on 396 | RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 397 | RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] 398 | 399 | 400 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 401 | 402 | # Option 2: rewrite example.com → www.example.com 403 | # 404 | # Be aware that the following might not be a good idea if you use "real" 405 | # subdomains for certain parts of your website. 406 | 407 | # 408 | # RewriteEngine On 409 | # RewriteCond %{HTTPS} !=on 410 | # RewriteCond %{HTTP_HOST} !^www\. [NC] 411 | # RewriteCond %{SERVER_ADDR} !=127.0.0.1 412 | # RewriteCond %{SERVER_ADDR} !=::1 413 | # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 414 | # 415 | 416 | 417 | # ###################################################################### 418 | # # SECURITY # 419 | # ###################################################################### 420 | 421 | # ---------------------------------------------------------------------- 422 | # | Clickjacking | 423 | # ---------------------------------------------------------------------- 424 | 425 | # Protect website against clickjacking. 426 | # 427 | # The example below sends the `X-Frame-Options` response header with 428 | # the value `DENY`, informing browsers not to display the content of 429 | # the web page in any frame. 430 | # 431 | # This might not be the best setting for everyone. You should read 432 | # about the other two possible values the `X-Frame-Options` header 433 | # field can have: `SAMEORIGIN` and `ALLOW-FROM`. 434 | # https://tools.ietf.org/html/rfc7034#section-2.1. 435 | # 436 | # Keep in mind that while you could send the `X-Frame-Options` header 437 | # for all of your website’s pages, this has the potential downside that 438 | # it forbids even non-malicious framing of your content (e.g.: when 439 | # users visit your website using a Google Image Search results page). 440 | # 441 | # Nonetheless, you should ensure that you send the `X-Frame-Options` 442 | # header for all pages that allow a user to make a state changing 443 | # operation (e.g: pages that contain one-click purchase links, checkout 444 | # or bank-transfer confirmation pages, pages that make permanent 445 | # configuration changes, etc.). 446 | # 447 | # Sending the `X-Frame-Options` header can also protect your website 448 | # against more than just clickjacking attacks: 449 | # https://cure53.de/xfo-clickjacking.pdf. 450 | # 451 | # https://tools.ietf.org/html/rfc7034 452 | # http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx 453 | # https://www.owasp.org/index.php/Clickjacking 454 | 455 | # 456 | # Header set X-Frame-Options "DENY" 457 | # # `mod_headers` cannot match based on the content-type, however, 458 | # # the `X-Frame-Options` response header should be send only for 459 | # # HTML documents and not for the other resources. 460 | # 461 | # Header unset X-Frame-Options 462 | # 463 | # 464 | 465 | # ---------------------------------------------------------------------- 466 | # | Content Security Policy (CSP) | 467 | # ---------------------------------------------------------------------- 468 | 469 | # Mitigate the risk of cross-site scripting and other content-injection 470 | # attacks. 471 | # 472 | # This can be done by setting a `Content Security Policy` which 473 | # whitelists trusted sources of content for your website. 474 | # 475 | # The example header below allows ONLY scripts that are loaded from the 476 | # current website's origin (no inline scripts, no CDN, etc). That almost 477 | # certainly won't work as-is for your website! 478 | # 479 | # For more details on how to craft a reasonable policy for your website, 480 | # read: http://www.html5rocks.com/en/tutorials/security/content-security-policy/ 481 | # (or the specification: http://www.w3.org/TR/CSP11/). Also, to make 482 | # things easier, you can use an online CSP header generator such as: 483 | # http://cspisawesome.com/. 484 | 485 | # 486 | # Header set Content-Security-Policy "script-src 'self'; object-src 'self'" 487 | # # `mod_headers` cannot match based on the content-type, however, 488 | # # the `Content-Security-Policy` response header should be send 489 | # # only for HTML documents and not for the other resources. 490 | # 491 | # Header unset Content-Security-Policy 492 | # 493 | # 494 | 495 | # ---------------------------------------------------------------------- 496 | # | File access | 497 | # ---------------------------------------------------------------------- 498 | 499 | # Block access to directories without a default document. 500 | # 501 | # You should leave the following uncommented, as you shouldn't allow 502 | # anyone to surf through every directory on your server (which may 503 | # includes rather private places such as the CMS's directories). 504 | 505 | 506 | Options -Indexes 507 | 508 | 509 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 510 | 511 | # Block access to all hidden files and directories with the exception of 512 | # the visible content from within the `/.well-known/` hidden directory. 513 | # 514 | # These types of files usually contain user preferences or the preserved 515 | # state of an utility, and can include rather private places like, for 516 | # example, the `.git` or `.svn` directories. 517 | # 518 | # The `/.well-known/` directory represents the standard (RFC 5785) path 519 | # prefix for "well-known locations" (e.g.: `/.well-known/manifest.json`, 520 | # `/.well-known/keybase.txt`), and therefore, access to its visible 521 | # content should not be blocked. 522 | # 523 | # https://www.mnot.net/blog/2010/04/07/well-known 524 | # https://tools.ietf.org/html/rfc5785 525 | 526 | 527 | RewriteEngine On 528 | RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC] 529 | RewriteCond %{SCRIPT_FILENAME} -d [OR] 530 | RewriteCond %{SCRIPT_FILENAME} -f 531 | RewriteRule "(^|/)\." - [F] 532 | 533 | 534 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 535 | 536 | # Block access to files that can expose sensitive information. 537 | # 538 | # By default, block access to backup and source files that may be 539 | # left by some text editors and can pose a security risk when anyone 540 | # has access to them. 541 | # 542 | # http://feross.org/cmsploit/ 543 | # 544 | # (!) Update the `` regular expression from below to 545 | # include any files that might end up on your production server and 546 | # can expose sensitive information about your website. These files may 547 | # include: configuration files, files that contain metadata about the 548 | # project (e.g.: project dependencies), build scripts, etc.. 549 | 550 | 551 | 552 | # Apache < 2.3 553 | 554 | Order allow,deny 555 | Deny from all 556 | Satisfy All 557 | 558 | 559 | # Apache ≥ 2.3 560 | 561 | Require all denied 562 | 563 | 564 | 565 | 566 | # ---------------------------------------------------------------------- 567 | # | HTTP Strict Transport Security (HSTS) | 568 | # ---------------------------------------------------------------------- 569 | 570 | # Force client-side SSL redirection. 571 | # 572 | # If a user types `example.com` in their browser, even if the server 573 | # redirects them to the secure version of the website, that still leaves 574 | # a window of opportunity (the initial HTTP connection) for an attacker 575 | # to downgrade or redirect the request. 576 | # 577 | # The following header ensures that browser will ONLY connect to your 578 | # server via HTTPS, regardless of what the users type in the browser's 579 | # address bar. 580 | # 581 | # (!) Remove the `includeSubDomains` optional directive if the website's 582 | # subdomains are not using HTTPS. 583 | # 584 | # http://www.html5rocks.com/en/tutorials/security/transport-layer-security/ 585 | # https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1 586 | # http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx 587 | 588 | # 589 | # Header set Strict-Transport-Security "max-age=16070400; includeSubDomains" 590 | # 591 | 592 | # ---------------------------------------------------------------------- 593 | # | Reducing MIME type security risks | 594 | # ---------------------------------------------------------------------- 595 | 596 | # Prevent some browsers from MIME-sniffing the response. 597 | # 598 | # This reduces exposure to drive-by download attacks and cross-origin 599 | # data leaks, and should be left uncommented, especially if the server 600 | # is serving user-uploaded content or content that could potentially be 601 | # treated as executable by the browser. 602 | # 603 | # http://www.slideshare.net/hasegawayosuke/owasp-hasegawa 604 | # http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx 605 | # http://msdn.microsoft.com/en-us/library/ie/gg622941.aspx 606 | # https://mimesniff.spec.whatwg.org/ 607 | 608 | 609 | Header set X-Content-Type-Options "nosniff" 610 | 611 | 612 | # ---------------------------------------------------------------------- 613 | # | Reflected Cross-Site Scripting (XSS) attacks | 614 | # ---------------------------------------------------------------------- 615 | 616 | # (1) Try to re-enable the cross-site scripting (XSS) filter built 617 | # into most web browsers. 618 | # 619 | # The filter is usually enabled by default, but in some cases it 620 | # may be disabled by the user. However, in Internet Explorer for 621 | # example, it can be re-enabled just by sending the 622 | # `X-XSS-Protection` header with the value of `1`. 623 | # 624 | # (2) Prevent web browsers from rendering the web page if a potential 625 | # reflected (a.k.a non-persistent) XSS attack is detected by the 626 | # filter. 627 | # 628 | # By default, if the filter is enabled and browsers detect a 629 | # reflected XSS attack, they will attempt to block the attack 630 | # by making the smallest possible modifications to the returned 631 | # web page. 632 | # 633 | # Unfortunately, in some browsers (e.g.: Internet Explorer), 634 | # this default behavior may allow the XSS filter to be exploited, 635 | # thereby, it's better to inform browsers to prevent the rendering 636 | # of the page altogether, instead of attempting to modify it. 637 | # 638 | # http://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities 639 | # 640 | # (!) Do not rely on the XSS filter to prevent XSS attacks! Ensure that 641 | # you are taking all possible measures to prevent XSS attacks, the 642 | # most obvious being: validating and sanitizing your website's inputs. 643 | # 644 | # http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx 645 | # http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx 646 | # https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 647 | 648 | # 649 | # # (1) (2) 650 | # Header set X-XSS-Protection "1; mode=block" 651 | # # `mod_headers` cannot match based on the content-type, however, 652 | # # the `X-XSS-Protection` response header should be send only for 653 | # # HTML documents and not for the other resources. 654 | # 655 | # Header unset X-XSS-Protection 656 | # 657 | # 658 | 659 | # ---------------------------------------------------------------------- 660 | # | Server software information | 661 | # ---------------------------------------------------------------------- 662 | 663 | # Prevent Apache from sending in the `Server` response header its 664 | # exact version number, the description of the generic OS-type or 665 | # information about its compiled-in modules. 666 | # 667 | # (!) The `ServerTokens` directive will only work in the main server 668 | # configuration file, so don't try to enable it in the `.htaccess` file! 669 | # 670 | # https://httpd.apache.org/docs/current/mod/core.html#servertokens 671 | 672 | # ServerTokens Prod 673 | 674 | 675 | # ###################################################################### 676 | # # WEB PERFORMANCE # 677 | # ###################################################################### 678 | 679 | # ---------------------------------------------------------------------- 680 | # | Compression | 681 | # ---------------------------------------------------------------------- 682 | 683 | 684 | 685 | # Force compression for mangled `Accept-Encoding` request headers 686 | # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html 687 | 688 | 689 | 690 | SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding 691 | RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding 692 | 693 | 694 | 695 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 696 | 697 | # Compress all output labeled with one of the following media types. 698 | # 699 | # (!) For Apache versions below version 2.3.7 you don't need to 700 | # enable `mod_filter` and can remove the `` 701 | # and `` lines as `AddOutputFilterByType` is still in 702 | # the core directives. 703 | # 704 | # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype 705 | 706 | 707 | AddOutputFilterByType DEFLATE "application/atom+xml" \ 708 | "application/javascript" \ 709 | "application/json" \ 710 | "application/ld+json" \ 711 | "application/manifest+json" \ 712 | "application/rdf+xml" \ 713 | "application/rss+xml" \ 714 | "application/schema+json" \ 715 | "application/vnd.geo+json" \ 716 | "application/vnd.ms-fontobject" \ 717 | "application/x-font-ttf" \ 718 | "application/x-javascript" \ 719 | "application/x-web-app-manifest+json" \ 720 | "application/xhtml+xml" \ 721 | "application/xml" \ 722 | "font/eot" \ 723 | "font/opentype" \ 724 | "image/bmp" \ 725 | "image/svg+xml" \ 726 | "image/vnd.microsoft.icon" \ 727 | "image/x-icon" \ 728 | "text/cache-manifest" \ 729 | "text/css" \ 730 | "text/html" \ 731 | "text/javascript" \ 732 | "text/plain" \ 733 | "text/vcard" \ 734 | "text/vnd.rim.location.xloc" \ 735 | "text/vtt" \ 736 | "text/x-component" \ 737 | "text/x-cross-domain-policy" \ 738 | "text/xml" 739 | 740 | 741 | 742 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 743 | 744 | # Map the following filename extensions to the specified 745 | # encoding type in order to make Apache serve the file types 746 | # with the appropriate `Content-Encoding` response header 747 | # (do note that this will NOT make Apache compress them!). 748 | # 749 | # If these files types would be served without an appropriate 750 | # `Content-Enable` response header, client applications (e.g.: 751 | # browsers) wouldn't know that they first need to uncompress 752 | # the response, and thus, wouldn't be able to understand the 753 | # content. 754 | # 755 | # https://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding 756 | 757 | 758 | AddEncoding gzip svgz 759 | 760 | 761 | 762 | 763 | # ---------------------------------------------------------------------- 764 | # | Content transformation | 765 | # ---------------------------------------------------------------------- 766 | 767 | # Prevent intermediate caches or proxies (e.g.: such as the ones 768 | # used by mobile network providers) from modifying the website's 769 | # content. 770 | # 771 | # https://tools.ietf.org/html/rfc2616#section-14.9.5 772 | # 773 | # (!) If you are using `mod_pagespeed`, please note that setting 774 | # the `Cache-Control: no-transform` response header will prevent 775 | # `PageSpeed` from rewriting `HTML` files, and, if the 776 | # `ModPagespeedDisableRewriteOnNoTransform` directive isn't set 777 | # to `off`, also from rewriting other resources. 778 | # 779 | # https://developers.google.com/speed/pagespeed/module/configuration#notransform 780 | 781 | # 782 | # Header merge Cache-Control "no-transform" 783 | # 784 | 785 | # ---------------------------------------------------------------------- 786 | # | ETags | 787 | # ---------------------------------------------------------------------- 788 | 789 | # Remove `ETags` as resources are sent with far-future expires headers. 790 | # 791 | # https://developer.yahoo.com/performance/rules.html#etags 792 | # https://tools.ietf.org/html/rfc7232#section-2.3 793 | 794 | # `FileETag None` doesn't work in all cases. 795 | 796 | Header unset ETag 797 | 798 | 799 | FileETag None 800 | 801 | # ---------------------------------------------------------------------- 802 | # | Expires headers | 803 | # ---------------------------------------------------------------------- 804 | 805 | # Serve resources with far-future expires headers. 806 | # 807 | # (!) If you don't control versioning with filename-based 808 | # cache busting, you should consider lowering the cache times 809 | # to something like one week. 810 | # 811 | # https://httpd.apache.org/docs/current/mod/mod_expires.html 812 | 813 | 814 | 815 | ExpiresActive on 816 | ExpiresDefault "access plus 1 month" 817 | 818 | # CSS 819 | ExpiresByType text/css "access plus 1 year" 820 | 821 | # Data interchange 822 | ExpiresByType application/atom+xml "access plus 1 hour" 823 | ExpiresByType application/rdf+xml "access plus 1 hour" 824 | ExpiresByType application/rss+xml "access plus 1 hour" 825 | 826 | ExpiresByType application/json "access plus 0 seconds" 827 | ExpiresByType application/ld+json "access plus 0 seconds" 828 | ExpiresByType application/schema+json "access plus 0 seconds" 829 | ExpiresByType application/vnd.geo+json "access plus 0 seconds" 830 | ExpiresByType application/xml "access plus 0 seconds" 831 | ExpiresByType text/xml "access plus 0 seconds" 832 | 833 | # Favicon (cannot be renamed!) and cursor images 834 | ExpiresByType image/vnd.microsoft.icon "access plus 1 week" 835 | ExpiresByType image/x-icon "access plus 1 week" 836 | 837 | # HTML 838 | ExpiresByType text/html "access plus 0 seconds" 839 | 840 | # JavaScript 841 | ExpiresByType application/javascript "access plus 1 year" 842 | ExpiresByType application/x-javascript "access plus 1 year" 843 | ExpiresByType text/javascript "access plus 1 year" 844 | 845 | # Manifest files 846 | ExpiresByType application/manifest+json "access plus 1 year" 847 | 848 | ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" 849 | ExpiresByType text/cache-manifest "access plus 0 seconds" 850 | 851 | # Media files 852 | ExpiresByType audio/ogg "access plus 1 month" 853 | ExpiresByType image/bmp "access plus 1 month" 854 | ExpiresByType image/gif "access plus 1 month" 855 | ExpiresByType image/jpeg "access plus 1 month" 856 | ExpiresByType image/png "access plus 1 month" 857 | ExpiresByType image/svg+xml "access plus 1 month" 858 | ExpiresByType video/mp4 "access plus 1 month" 859 | ExpiresByType video/ogg "access plus 1 month" 860 | ExpiresByType video/webm "access plus 1 month" 861 | 862 | # Web fonts 863 | 864 | # Embedded OpenType (EOT) 865 | ExpiresByType application/vnd.ms-fontobject "access plus 1 month" 866 | ExpiresByType font/eot "access plus 1 month" 867 | 868 | # OpenType 869 | ExpiresByType font/opentype "access plus 1 month" 870 | 871 | # TrueType 872 | ExpiresByType application/x-font-ttf "access plus 1 month" 873 | 874 | # Web Open Font Format (WOFF) 1.0 875 | ExpiresByType application/font-woff "access plus 1 month" 876 | ExpiresByType application/x-font-woff "access plus 1 month" 877 | ExpiresByType font/woff "access plus 1 month" 878 | 879 | # Web Open Font Format (WOFF) 2.0 880 | ExpiresByType application/font-woff2 "access plus 1 month" 881 | 882 | # Other 883 | ExpiresByType text/x-cross-domain-policy "access plus 1 week" 884 | 885 | 886 | 887 | # ---------------------------------------------------------------------- 888 | # | File concatenation | 889 | # ---------------------------------------------------------------------- 890 | 891 | # Allow concatenation from within specific files. 892 | # 893 | # e.g.: 894 | # 895 | # If you have the following lines in a file called, for 896 | # example, `main.combined.js`: 897 | # 898 | # 899 | # 900 | # 901 | # Apache will replace those lines with the content of the 902 | # specified files. 903 | 904 | # 905 | # 906 | # Options +Includes 907 | # AddOutputFilterByType INCLUDES application/javascript \ 908 | # application/x-javascript \ 909 | # text/javascript 910 | # SetOutputFilter INCLUDES 911 | # 912 | # 913 | # Options +Includes 914 | # AddOutputFilterByType INCLUDES text/css 915 | # SetOutputFilter INCLUDES 916 | # 917 | # 918 | 919 | # ---------------------------------------------------------------------- 920 | # | Filename-based cache busting | 921 | # ---------------------------------------------------------------------- 922 | 923 | # If you're not using a build process to manage your filename version 924 | # revving, you might want to consider enabling the following directives 925 | # to route all requests such as `/style.12345.css` to `/style.css`. 926 | # 927 | # To understand why this is important and even a better solution than 928 | # using something like `*.css?v231`, please see: 929 | # http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/ 930 | 931 | # 932 | # RewriteEngine On 933 | # RewriteCond %{REQUEST_FILENAME} !-f 934 | # RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp)$ $1.$3 [L] 935 | # 936 | --------------------------------------------------------------------------------