22 สุดยอดเทคนิค .htaccess

รักชอบแชร์เลย!! Share on FacebookShare on Google+Pin on PinterestTweet about this on TwitterShare on LinkedIn

อบคุณข้อมูลจาก piranon.com ครับขออนุญาตก๊อปมาใสในบล็อก บทความดีๆ กลัวหายครับ ^^
.htaccess คือ วิธีการอีกหนึ่งวิธีที่ใช้สำหรับ config เปลี่ยนค่าต่างๆ ของแต่ละ directory หลักๆ ภายในไฟล์อาจจะประกอบไปด้วย 1 หรือหลายๆคำสั่ง โดยไฟล์ .htaccess จะถูกเจาะจงวางใว้แค่บาง directory และจะบังคับใช้คำสั่งภายใน directory และ sub directory นั้นๆ

ซึ่งผมได้รวบรวมเทคนิคที่เป็นประโยชน์และสำคัญๆใว้ดังนี้ครับ

1. Custom Directory Index Files

DirectoryIndex index.html index.php index.htm

คุณสามารถเปลี่ยนค่า default index file ได้โดยใช้คำสั่งข้างบน โดยระบุไฟล์ที่คุณต้องการ แทน index.html index.php index.htm ตามลำดับ

2. Custom Error Pages

ErrorDocument 404 errors/404.html

ใช้สำหรับ redirect user ไปหน้าที่คุณต้องการ ถ้าเกิดเหตุการที่ user เรียกหน้าที่ไม่มีในระบบ (เกิด error 404)

3. Control access at files & directory level

จำกัดหรือปฏิเสธการเข้าใช้ไฟล์หรือโฟลเดอร์ที่เป็นส่วนบุคคล เช่น โฟลเดอร์ includes ที่เก็บไฟล์สคริปต่างๆ
ในกรณีนี้ให้คุณสร้างไฟล์ .htaccess ในโฟลเดอร์ includes แล้วใส่คำสั่งดังนี้

# no one gets in here!
deny from all

จะปฏิเสธทุก direct access และทุกไฟล์ที่อยู่ในโฟลเดอร์นั้น
คุณสามารถระบุเงื่อนไขได้เช่นกัน โดยตัวอย่างนี้เป็นการจำกัดการเข้าถึงจากช่วงของ IP

# no nasty crackers in here!
order deny,allow
deny from all
allow from 192.168.0.0/24
# this would do the same thing..
#allow from 192.168.0

หรือบางครั้งคุณอาจจะแค่ต้องการ ban เพียงแค่ IP เดียว

# someone else giving the ruskies a bad name..
order allow,deny
deny from 83.222.23.219
allow from all

4. Modifying the Environment Variable

Set / Unset environment variables โดยใช้ SetEnv and UnSetEnv.

SetEnv SITE_WEBMASTER_URI mailto:Jack.Sprat@characterology.com

UnSetEnv REMOTE_ADDR

5. 301 Redirect using htaccess

ถ้าคุณต้องการที่จะ redirect จากไฟล์เก่าไปไฟล์ใหม่

Redirect 301 /old/file.html http://yourdomain.com/new/file.html

ถ้าเป็นไดเรคทอรี่

RedirectMatch 301 /blog(.*) http://yourdomain.com/$1

6. Implementing a Caching Scheme with .htaccess

Cache ข้อมูลที่มีการเปลี่ยนแปลงไม่บ่อย (static) เพื่อเพื่ม performance ระบบ

# year

Header set Cache-Control “public”
Header set Expires “Thu, 15 Apr 2010 20:00:00 GMT”
Header unset Last-Modified

#2 hours

Header set Cache-Control “max-age=7200, must-revalidate”

SetOutputFilter DEFLATE
Header set Expires “Thu, 15 Apr 2010 20:00:00 GMT”

7. Compress output using GZIP

บีบอัดไฟล์ css, js, html, ด้วย Gzip

mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

โดยโค้ดข้างบนจะทำงานถ้าเว็บเซอร์เวอร์ของคุณเปิด mod_gzip คุณอาจจะต้องเพิ่มโค้ดข้างล่างนี้
ถ้าเว็บเซอร์เวอร์ของคุณสนับสนุน mod_deflate

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \
\.(?:exe|t?gz|zip|gz2|sit|rar)$ no-gzip dont-vary

ถ้าเว็บเซอร์เวอร์ของคุณไม่สนันสนุน mod_deflate คุณอาจต้องการเพิ่มโค้ดนี้

php_value output_handler ob_gzhandler

8. Redirect browser to https (ssl)

redirect เว็บไซด์ไปใช้ https

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

9. Rewrite URLs using htacccess

เปลี่ยน URL จาก product.php?id=12 เป็น product-12.html

RewriteEngine on
RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1

เปลี่ยน URL จาก product.php?id=12 เป็น product/ipod-nano/12.html

RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2

เปลี่ยน URL ที่ไม่มี www ให้มี www (ป้องกัน Duplicate Content)

RewriteEngine On
RewriteCond %{HTTP_HOST} ^viralpatel\.net$
RewriteRule (.*) http://www.viralpatel.net/$1 [R=301,L]

เปลี่ยน URL จาก yoursite.com/user.php?username=xyz เป็น yoursite.com/xyz

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

Redirect domain ไปหา subfolder ภายใน public_html

RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.test\.com$
RewriteCond %{REQUEST_URI} !^/new/
RewriteRule (.*) /new/$1

10. Prevent Directory Listing

หลีกเลี่ยง directory listing

Options -Indexes

หรือ

IndexIgnore *

11. Adding new MIME types

ประเภทขึ้นอยู่กับนามสกุลไฟล์ นามสกุลที่ไม่รู้จักจะถูกเปลี่ยนเป็นข้อความ และจะเกิดความเสียหาย

AddType application/x-endnote-connection enz
AddType application/x-endnote-filter enf
AddType application/x-spss-savefile sav

12. Deny access to static file data

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteCond %{HTTP_REFERER} !^http://www.askapache.com.*$ [NC]
RewriteRule \.(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$ – [F,NS,L]

13. Specify Upload file limit for PHP in htaccess

php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200

บรรทัดแรกคือการจำจัดค่าสูงสุดของไฟล์ที่สามารถอัพโหลดได้
บรรทัดสองคือการจำกัดค่าสูงสุดของข้อมูลการโพส
บรรทัดสามคือค่าเวลาในการ execution
บรรทัดสุดท้ายคือค่าเวลาสูงสุดที่อนุญาติในการ input ข้อมูลอัพโหลดเช่น POST and GET

14. Disallow Script Execution

Options -ExecCGI
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi

15. Change Charset and Language headers

AddDefaultCharset UTF-8
DefaultLanguage en-US

16. Set Timezone of the Server (GMT)

SetEnv TZ America/Indianapolis

รายชื่อของเขตเวลาที่สนับสนุน
http://www.php.net/manual/en/timezones.php

17. Force “File Save As” Prompt

AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

18. Protecting a single file

โดยปกติ .htaccess จะมีผลกับข้อมูลทั้งไดเรคทอรี่ แต่คุณสามารถที่จะแก้ไขคำสั่งแบบเจาะจงกับบางไฟล์

order deny,allow
deny from all
AuthType Basic
AuthName “Characterology Student Authcate”
AuthLDAP on
AuthLDAPServer ldap://directory.characterology.com/
AuthLDAPBase “ou=Student, o=Characterology University, c=au”
require valid-user
satisfy any

19. Set Cookie using htaccess

environment variable

Header set Set-Cookie “language=%{lang}e; path=/;” env=lang

สร้าง cookie ในเครื่อง client กับข้อมูลที่ matching กัน

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)(de|es|fr|it|ja|ru|en)/$ – [co=lang:$2:.yourserver.com:7200:/]

20. Send Custom Headers

Header set P3P “policyref=\”http://www.askapache.com/w3c/p3p.xml\””
Header set X-Pingback “http://www.askapache.com/xmlrpc.php”
Header set Content-Language “en-US”
Header set Vary “Accept-Encoding”

21. Blocking request based on User-Agent Header

SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT

22.Prevent hacks

ถ้าคุณต้องการที่จะเพิ่มระดับความปลอดภัยให้กับระบบคุณ คุณสามารถเพิ่มโค้ดเพียงไม่กี่บรรทัดนี้ เพื่อตรวจสอบ url ที่แปลกๆที่มีพิรุทเสี่ยงจะเป็นอัตราย

RewriteEngine On

# proc/self/environ? noway!
RewriteCond %{QUERY_STRING} proc/self/environ [OR]

# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]

# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

# Block out any script that includes a

รักชอบแชร์เลย!! Share on FacebookShare on Google+Pin on PinterestTweet about this on TwitterShare on LinkedIn

โปรเจ็คเยอะใช่ว่าจะดี ไม่มีอึ้ง

รักชอบแชร์เลย!! Share on FacebookShare on Google+Pin on PinterestTweet about this on TwitterShare on LinkedIn

“โปรเจ็คเยอะใช่ว่าจะดี”

2015-08-16_051318

ปรเจ็คใน list ผมเริ่มสร้างเมื่อปี 2007 แต่ มีไม่ถึง 20% ที่สร้างรายได้ให้ กว่า 80% ของทั้งหมด ดังนั้น ถึงเวลาที่ต้องตัดสินใจเลือก เพื่อปรับปรุงแผน ให้สอดคล้องกับเป้าหมายหลัก

ผมจะซิ้งค์ folder list นี้ไปยังทุกๆ ที่ ที่ออนไลน์ได้ และเข้าถึงได้ เช่น PC ที่ใช้ประจำการทุกวัน Notebook สำหรับเวลา ที่ต้องหอบงานไปทำข้างนอก บนมือถือหลักทั้งสองเครื่อง (IOS,Android ใช้ ทดสอบ app) เครื่อง Sever Base (ใช้เก็บข้อมูลประมาณมากและใช้รันทูลต่างๆอัตโนมัติ) และ Tablet โดยผ่าน Cloud Service ที่ชื่อว่า Dropbox นั่นเอง เพราะหากสถานะการใหนว่าง และสะดวกกับอุปกรณ์ไหน ก็จะจับขึ้นมาทบทวน และ ทำมัน ได้ทันที (หากต้องการใช้ Dropbox แบบฟรีๆ คลิกจากลิงค์ https://db.tt/hiBxiXC ได้เลยครับ )

วันนี้ตื่นเช้าหน่อย และต้องรีบปิด Project WebDesign ที่ค้างคาให้เสร็จภายใน 3 เดือนถัดจากนี้ เพราะ..มันกินเวลามากและต้องเหนื่อยทุกครั้งที่จะได้รายได้กลับมา

หลังจากนั้น ก็ไปทำงานที่ชอบและสร้างรายได้เป็นกอบเป็นกำ ในขณะที่ มีเวลามากขึ้น และที่สำคัญ มัน ไปในทิศทางเดียวกับเป้าหมายหลัก เพราะจะได้ใช้ ต้นทุน ทั้งเงิน และ เวลา ไปกับโปรเจ็คที่ไปในทิศทางเดียวกันให้คุ้มค่า

จริงๆ ใช้เวลาน้อยๆ ก็ได้ effective มากก็ทำได้เหมือนกัน ถ้าจัดการกับมันจริงๆ ไม่ใช่ ไหลลื่นไปตามอารมณ์ตัวเอง

วันนี้ก็ไม่มีไรมาก แค่ลองจับโปรเจ็ก ย่อยๆ ที่คิดจะทำ แต่ไมไ่ด้ทำสักที ย้ายไปยัง Folder Bin แล้วลืมมันไปซะ เท่านั้นแหละ!!

16-08-2015

รักชอบแชร์เลย!! Share on FacebookShare on Google+Pin on PinterestTweet about this on TwitterShare on LinkedIn