OTHERS
常用的.htaccess Rewrite

htaccess

由URL Pass Parameter,例如「sample.php?a=1&b=2」,又「?」又「=」又「&」,令網址難記,而且不受搜尋器歡迎,這時候就要用.htaccess令網址變得乾淨啦。

.htaccess簡介

.htaccess是一個名叫.htaccess的檔案,適用於Apache的Web Server,放置在網站的根目錄(即使子目錄也有.htaccess檔案,也會受根目錄的.htaccess影響)。
.htaccess有很多功能,主要用途有設定文件夾的存取限制、Rewriting URL等。

基本Rewrite

RewriteEngine On
Enable Rewriting 功能

RewriteBase /
當.htaccess檔案放在根目錄時
RewriteBase /
當.htaccess檔案放在子目錄(假設是<dir>)時
RewriteBase /dir/

RewriteBase /dir/RewriteBase Explained
http://rationalspace.wordpress.com/2013/02/06/rewritebase-explained/
How does RewriteBase work in .htaccess
http://stackoverflow.com/questions/704102/how-does-rewritebase-work-in-htaccess

指定檔案Redirect

例子:輸入http://例子.com/about
但Load的是http://例子.com/about.html

整個Directory Redirect

例子:輸入http://例子.com/new/a.html
但Load的是http://例子.com/old/a.html

Redirect所有第一/二子目錄下的Directory

例子:將所有第一/二子目錄內的uploads Directory轉成第一子目錄為uploads

RewriteRule ^([a-zA-Z0-9_-]+)/uploads/(.*)$ uploads/$2 [L]為例
$1的值為^([a-zA-Z0-9_-]+)
$2的值為(.*)

將指定Directory由Redirect排除

例子:將所有Directory和檔案轉到redirect,但在Directory exception內的都不會被Redirect
#要先寫exception再寫Redirect

將指定檔案由Redirect排除

例子:所有css檔都不Redirect

統一成有/無www

例子:統一成無www

例子:統一成有www

RewriteRule Flags [L]的意思

除了[L]外,還有[R=301,L]等多種變化,詳細可參考這裡
我較常用[L][L]的意思類似是break,只要找到符合的rule,接下來的rule都不會被process。
[R=301,L]也很常用,R=301即是301 Redirects,指永久轉走。

.htaccess內的Comment

整個.htaccess的例子

由Wordpress照抄的

.htaccess Rule 大集合

寫完後才見到這個 XD
.htaccess Snippets
https://github.com/phanan/htaccess

參考

RewriteBase Explained
http://rationalspace.wordpress.com/2013/02/06/rewritebase-explained/
Clean URLs not working? Check your .htaccess file!
https://www.drupal.org/node/256410

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">