天天看點

apache 僞靜态頁面

首先自我介紹一下,我是一個前端人員,對于背景的知識也是知之甚少;有什麼不足之處請諒解!

好了,現在我介紹一下 php怎麼進行僞靜态頁面的實作;

我相信大家都見過這樣格式的網址,你一定會好奇他們是怎麼做的;

http://c/123.html

http://www.rmtime.com/rm-123.html

http://www.rmtime.com/rm-a-2-b-213-c-3.html

他們是怎麼做到的,難道他們不用傳遞id或者tid等變量嗎

我們知道一般的網站傳遞參數都是以

http://www.rmtime.com/rm.php?tid=1

這種形式來傳遞的,這種形式他不利于seo搜尋排名;

好,廢話不多說了!

步驟:

1.apache的配置 僞靜态

2.建立 .htaccess

3.編寫相關 僞靜态 規則(簡單執行個體)

配置apache 僞靜态

首先我們找到 httpd.conf 這個檔案;

舉例:

C:\wamp\bin\apache\apache2.2.8\conf\httpd.conf

打開這個檔案;

搜尋:

#LoadModule rewrite_module modules/mod_rewrite.so

把他前面的#去掉,

接着

在httpd.conf中

找到

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
           

把裡面的

AllowOverride
           

改為All

儲存

這樣apache的基本配置就做好了!

下一步就是建立 .htaccess檔案,把他存放在網站的根目錄下;

注意:在window作業系統下是無法建立的;

解決辦法:

apache 僞靜态頁面

這樣就建立在網站的根目錄了;

接着我們用記事本打開此.htaccess檔案

粘貼這段

<IFMODULE mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule rmtime-([0-9]*).html$ rmtime.php?id=$1

</IFMODULE>

本地建立 rmtime.php

内容是:

<?php echo $_GET['id']; ?>

儲存

服務方式:

localhost / rmtime-12.html

如果頁面顯示12那麼說明實驗成功!恭喜!

相關規則例子:

例子一:

原先:http:// www.rmtime.com / rmtime.php?id=123

處理後 : http:// www.rmtime.com / 123.html

規則 : RewriteRule ([0-9]+).html$ rmtime.php?id=$1 

例子二:

原先:http:// www.rmtime.com / rmtime.php?id=123

處理後 : http:// www.rmtime.com / rm-123.html

規則 : RewriteRule rm-([0-9]+).html$ rmtime.php?id=$1 

例子三:

http://www.rmtime.com /rmtime.php?a=a1&b=b1&c=c1

RewriteRule ^(.*)-htm-a-([a-z0-9\_]+)-b-([a-z0-9\_]+)-c-([a-z0-9\_]+.html)$ rmtime.php?a=&b=&c= 

規則

%{HTTP_HOST}

:

是指取得使用者通路的URL的主域名 然後空格後面是一個正規表達式比對,意識就

是說是否是 nbphp.com

RewriteRule ^(.*)$ http://www.abc.com/$1 [R=301,L]

R的含義是redirect,即重定向,該請求不會再被apache交給後端處理,而是直接

傳回給浏覽器進行重定向跳轉。301是傳回的http狀态碼,具體可以參考http rfc

文檔,跳轉都是3XX。

L是last,即最後一個rewrite規則,如果請求被此規則命中,将不會繼續再向下

比對其他規則。

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

%{REQUEST_FILENAME}  請求的檔案名

!-f  不是檔案或不存在

!-d  不是目錄或不存在

[L] 這是最後一個比對項,不再往下比對

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

意思就是說将所有頁面全部指向index.php上。我估計可能是某段用來靜态化頁面

的代碼吧。