Pages

Subscribe:

Ads 468x60px

Labels

顯示具有 Apache 標籤的文章。 顯示所有文章
顯示具有 Apache 標籤的文章。 顯示所有文章

2017年5月22日 星期一

如何透過.htaccess檔,來使用URL redirect/rewrite功能?

資料來源

.htaccess 重新導向/改寫    教學


章節 1   如何讓轉向所有到www.domain.com的連結,去domain.com?


問題描述
你的網站可以透過www.domain.com和domain.com這兩個域名來存取。由於Google會處罰這樣子的網站只因為它們有重複的內容,你得讓你的域名要嘛是domain.com或是www.domain.com 。然而,由於所有從外界連進來的連結並不歸你管,而且搜尋引擎也已經對你的網站的兩個域名建立索引了,你很難輕易地改變這件事。

解法
對於所有向錯誤URL要資料的http請求,做一個301轉址。

範例1 - 轉向所有不是www.domain.com 去www.domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

範例2 - 轉向所有不是domain.com 去domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

範例3 - 轉向所有domain.com 去www.domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]


對於上述範例的解釋
讓我們先看範例1:
第一行指示apache啟動改寫模組
第二行RewriteCond %{HTTP_HOST} !www\.domain\.com$是比對指令。比對指令表示下一行的改寫指令只有當%{HTTP_HOST},即瀏覽器指向的域名,不是www.domain.com這個域名時,才會作用。其中!表示了「不是」的意思。[NC]表示忽略大小寫。^$這兩個符號中的文字,是正規表示式。所以.前面,必須加上逸脫字元。
第三行描述了改寫將如何改。其中^(.*)$這個正規表示式,比對了URL除了域名的後半部分。這條規則,表示將比對到的URL的後面部分,視為是$1,附加在domain.com/之後,作為新的URL。[L]表示這是最後一條改寫指令,所以一個http要求做了這次改寫之後,就會直接做為結果。而R=301是表示,網頁伺服器傳回一個301狀態碼給瀏覽器。


章節 2   如何將domain.com/重新導向成domain.com/index.php

問題描述:
你有個網站,域名是domain.com,而你打算讓所有進來的URL連結,凡是連到domain.com/的會跑到domain.com/index.php

解法:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^$ http://domain.com/index.php [L,R=301]

對於上述範例的解釋
第一行指示apache啟動改寫模組
第二行RewriteCond %{HTTP_HOST} ^domain\.com$是比對指令。比對指令表示下一行的改寫指令只有當%{HTTP_HOST},即瀏覽器指向的域名,等於domain.com這個域名時,才會作用。^$這兩個符號中的文字,是正規表示式。所以.前面,必須加上逸脫字元。
第三行描述了改寫將如何改。其中^$這個正規表示式,比對了URL除了域名的後半部分。這條規則,表示將比對到的URL的後面部分,在這個例子中,是空字串。而新的URL,將是http://domain.com/index.php。[L]表示這是最後一條改寫指令,所以一個http要求做了這次改寫之後,就會直接做為結果。而R=301是表示,網頁伺服器傳回一個301狀態碼給瀏覽器。

章節 3   如何透過.htaccess檔來移動域名下的資料


問題描述:
你有個網站,可以透過舊的域名olddomain.com來存取。而現在你有個新的域名,現在你希望這個網站可以透過newdomain.com來存取。然而,外界(整個網際網路)已經有有許多指向舊的域名的連結,你希望他們可以自動改連到新的域名。如此一來,舊域名的Google的搜尋排行也將可以由新域名來繼承。

解法:
對於每個到舊的域名要求資料的http要求,做301轉址

範例 - 從olddomain.com轉向到www.newdomain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^newdomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]


章節 4   加入結尾斜線到被要求的URL後方。


問題描述:
有時候,網址中的結尾斜線的表示的意思是資料夾,如果忘了加結尾斜線就會造成伺服器錯誤。舉個例子,如果http://domain.com/dir/對應到dir這個目錄。如果使用者打的網址是http://domain.com/dir時,因為忘了加結尾斜線,伺服器會以為要去找dir這個檔案,就會造成錯誤。

解法:
讓所有的沒有結尾斜線但是又是指向資料夾的URL,轉向成有結尾斜線的URL。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$           $1/  [R]

對於上述範例的解釋
第一行指示apache啟動改寫模組
第二行RewriteCond %{REQUEST_FILENAME} -d是比對指令。意思是,只有當目標的檔名是一個資料夾時,才讓下方的改寫規則作用。
第三行描述了改寫規則將如何改寫。其中^(.+[^/])$這個正規表示式,比對了URL除了域名的後半部分。這條規則,表示將比對到的URL的後面部分,是一個最後沒有加結尾斜線的字串。改寫時,原來的檔名最後將被加上結尾斜線,作為新的URL。而R表示,網頁伺服器傳回一個301狀態碼給瀏覽器。


更多範例,請參考Apache官方文件

2015年12月5日 星期六

centos 6.3 部署davical

資料來源
系統環境介紹:
Centos 6.3 IP:192.168.1.185/24
安裝必須源
#rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安裝常用工具
#yum -y install vim wget make gcc automake yum-utils unzip
安裝LAPP(apache、postgreSQL、php)
#yum install httpd php php-pgsql
#yum install perl-YAML perl-DBD-Pg 
#yum install postgresql postgresql-server postgresql-libs postgresql-devel
創建下載目錄
#mkdir download
#cd download/
下載日曆軟件包
#wget debian.mcmillan.net.nz/packages/awl/libawl-php-0.53-1.noarch.rpm
#wget http://debian.mcmillan.net.nz/packages/davical/davical-1.1.1-2.noarch.rpm
安裝日曆包
#rpm -ivh davical-1.1.1-2.noarch.rpm 
#rpm -ivh libawl-php-0.53-1.noarch.rpm 
#perl -MCPAN -e 'install DBD::Pg'
初始化數據庫
#service postgresql initdb
[postgresql]修改配置文件
#vim /var/lib/pgsql/data/pg_hba.conf 
TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
#service postgresql restart
#cd /usr/share/davical/dba/
#su postgres -c ./create-database.sh
Supported locales updated.
Updated view: dav_principal.sql applied.
CalDAV functions updated.
RRULE functions updated.
Database permissions updated.
NOTE
====
* You will need to edit the PostgreSQL pg_hba.conf to allow the
'davical_dba' database user access to the 'davical' database.
* You will need to edit the PostgreSQL pg_hba.conf to allow the
'davical_app' database user access to the 'davical' database.
* The password for the 'admin' user has been set to 'byBYxMNA' //使用浏覽器訪問日曆服務器的U&P
Thanks for trying DAViCal! Check in /usr/share/doc/davical/examples/ for
some configuration examples. For help, visit #davical on irc.oftc.net.
[Apache]連接日曆文件到網站根目錄下
#cd /var/www/html/
#ln -s /usr/share/davical/htdocs davical
創建日曆服務器的配置文件
#gunzip /usr/share/doc/davical/examples/davical-conf.php/example-config.php.gz -c > /etc/davical/192.168.1.185-conf.php
#vim /etc/httpd/conf/httpd.conf
ServerName 192.168.1.185:80
NameVirtualHost *:80
ServerName 192.168.1.184
DocumentRoot /var/www/html
DirectoryIndex index.php index.html
Alias /images/ /var/www/html/davical/images
AcceptPathInfo On
php_value include_path /usr/share/awl/inc
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value error_reporting "E_ALL & ~E_NOTICE"
php_value default_charset "utf-8"
#service httpd restart
#service iptables stop
#chkconfig iptables off
#chkconfig httpd on
#chkconfig postgresql on
you can access through a browser davical server:
192.168.1.185/davical



          centos 6.3 部署davical
此服務器沒有自帶客戶端,需另外安裝客戶端工具.
具體步驟參考官方網站:http://davical.org/
祝一切好運!
本文出自 “西伯利亞·狼” 博客,請務必保留此出處http://kernal.blog.51cto.com/8136890/1540610

2015年11月26日 星期四

Cent OS 7 安裝

這兩天架了一台Cent OS7的主機,我發現變化有點大。還好透過Google大神幫助找到幾篇文章,終於協助我將網站架設起來,並且啟動個人網站。

安裝重點可以參考
1.http://myip.tw/itsmw/index.php?title=CentOS7

重點是將SeLinux關閉

2.http://tech.hitsug.net/?CentOS-7%2FApache%2F%E8%A8%AD%E5%AE%9A
個人網站的開啟不再是透過http.conf
這篇資料提供設定的方式,調整後就可以正常運作

3.安裝webmin
這還是很重要的,另外CentOS7多了firewallD
透過這個來設定開放的Port
還有網路的設定必須啟動時就啟動網路設備
不然網路就不通了