首先解釋一下web服務器:Web服務器一般指網站服務器,是指駐留於因特網上某種類型計算機的程序,可以向瀏覽器等Web客戶端提供文檔,[1] 也可以放置網站文件,讓全世界瀏覽;可以放置數據文件,讓全世界下載。目前最主流的三個Web服務器是Apache Nginx IIS。
上面是官方的解釋,我自己的理解是:有一台在互聯網中的計算機,在該計算機上有一個軟件(這個軟件可以是Apache Nginx IIS這3中任意一個)。然后我們將服務器語言編寫的互聯網產品(網站、web服務、web應用程序)配置在該軟件上。這個樣大家就可以通過瀏覽器等web客戶端去訪問我們的互聯網產品。
ps:什么叫服務器語言,就是大家學習的asp/asp.net/php等。
大家不用覺得web服務器很復雜,它其實就是裝有一個可以相應web客戶端軟件的電腦而已。
今天,遇見了一個任務:無論瀏覽器訪問的網址是什么樣的(網址一定會包含/*/*/*這種格式)如:www.IP/1/2/3.com.都要轉換成www.IP?x=*&y=*&z=*這種格式的網址,條件使用Apache 實現,以前也沒用過這個所以將自己的學習過程記錄下來。
首先APAHCE有很多版本,我為了兼容性下載的是Apache2.4打開之后如圖:
所有的配置文件都在conf下面,打開:
經查詢,APACHE軟件讀取的都是httpd.conf這個文件里面的內容,可能大家會問了,那別的配置文件里的內容沒用嗎?不是的,咱們打開httpd.conf這個文件:
大家看一下紅線圍起來的單詞:Include ,就是這個詞將別的文件的配置信息計入主配置文件httpd.conf了,在httpd.conf這個文件中大家看到許多#號,帶#號的意思就是這一句被注釋掉了。
大家在httpd.conf文件中再搜索一個關鍵字Define SRVROOT,查詢結果會看到這一句:Define SRVROOT "/Apache24",這一句的意思是你的apache軟件安裝在了哪,默認是c盤,如果你將安裝文件夾放在了D盤,那么把這一句改成Define SRVROOT "D/Apache24"就可以了(注意這里 的路徑是絕對路徑)。
大家都訪問過網站,通常是www開頭的,這個叫做域名,最總域名會解析成IP如www.baidu.com最總訪問的是220.181.57.216這個服務器。同一台web服務器可以發布多個網站,這只用ID來區分那個網站對應那個地址是不行的。所以這個我們在IP的后面加入了端口號,大家搜索關鍵字Listen ,看到Listen 80 這就是這個服務器監聽的端口號,我們為了不沖突把80改為 8012。
好了,現在你的apache就可以工作了,打開bin文件夾下的:
標紅的exe這樣你的Apache就開始工作了,咱們試試,在瀏覽器輸入127.0.0.1(這個是你電腦自己的IP,相當於localhost)看看結果:
這個就是APache的歡迎界面。證明我們的配置成功了。
接下來開始我今天的任務,經過查詢資料,解決我這個問題要用到的技術是:
apache rewrite模塊反向代理的配置
接下來經過查詢資料得到結果如下:首先我們在httpd.conf文件中標了#號的幾句換放開
標紅的4句話放開(別問為啥了,apache軟件的設計者頂的……),這樣一來,我們的apache軟件就是具備了反向訪問別的url的功能,但是到底什么樣的url我們去讓它必須訪問我們定義的url呢?這就需要規則,規則在下面的文件中定義
extra文件中的httpd-vhosts.conf文件,打開httpd-vhosts.conf文件將下面的這一段話寫入你的文件:
<VirtualHost _default_:8012>
DocumentRoot "${SRVROOT}/htdocs"
#ServerName www.example.com:80
<IfModule mod_rewrite.c>
RewriteEngine On
rewritecond ^/abc/(.*)/(.*)/(.*)
RewriteRule http://www.baidu.com [P]
</IfModule>
</VirtualHost>
接下來解釋下:RewriteEngine On 開啟重定向
rewritecond:什么樣的url 我們去重定向
RewriteRule 重定向到哪(這里是百度)
好了結果是什么呢?我們的目的是如果url 是類似 127.0.0.1:8021/abc/1/1/1 這種格式那么訪問到的內容是百度首頁.
大家也動手試試吧。