程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中使用偽靜態

php中使用偽靜態

編輯:關於PHP編程

上次簡單的說了下php中正則表達式的使用,這一次正則表達式可以派上用場了,學習偽靜態需要能夠很好的使用正則表達式,那麼偽靜態和真靜態的區別是什麼呢,我覺得應該是偽靜態可以節約磁盤空間、利於SEO、訪問速度上沒有真靜態那麼快。偽靜態也是對apache的rewrite機制的使用,下來就來分享下吧

1.使用偽靜態首先要確認打開rewrite模塊

首先打開httpd.conf,找到LoadModule rewrite_module modules/mod_rewrite.so去掉前面的#即可之後重啟apache,使用phpinfo確認重寫模塊成功啟用

\

看到有紅色這個就說明rewrite已經啟用成功了<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPjIuyrnTw86xvrLMrNKqz8jU2kRpcmVjdG9yecDvvNPSu77kQWxsb3dPdmVycmlkZSBBbGw8L3A+CjxwPtXi0ru+5L/J0tS809TaYXBhY2hltcRodGRvY3O1xERpcmVjdG9yeb3atePA77vy1d/Q6cTi1ve7+rXERGlyZWN0b3J5vdq148DvPC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all 之後的偽靜態重寫規則可以在Directory節點裡寫,也可以寫在一個單獨的.htaccess文件裡,我強烈推薦使用後面這種方式

3.apache指定首頁面、錯誤頁

首先新建一個.htaccess文件,一般是先新建一個xx.txt文件另存為即可,這個文件我就放到項目的根目錄,這個文件的內容如下

DirectoryIndex index.php
ErrorDocument 404 /static2/404.php

下面先來測試404,我們先訪問一個不存在的php看看404生效沒有,這個是我的錯誤頁面


下面是運行截圖

\

首頁的html如下





系統首頁


歡迎


我們直接把地址定位到根目錄,回車後就能看到我們的這個首頁了

\

還有這麼一種情況需要考慮那就是訪問的時候apache列出目錄結構的問題,其實很簡單就在.htaccess加一句Options None,需要注意的是Directory裡就不能配置Options了,否則會出現403錯誤


4.偽靜態的使用

http://localhost/static2/view-sports-id5.html類似這種url我們應該見過很多了,這種就是一種偽靜態的url了,我們看上去訪問的是一個靜態的html但其實不是,類似這種url像sports和id後面的5可能就是程序中要使用的參數,我們訪問的其實是一個動態頁面。這樣的話比較利於SEO,下面上一段配置給大家看看


RewriteEngine on 
RewriteRule view-([a-zA-Z_]+)-id(\d+)\.html news.php?type=$1&id=$2

RewriteEngine on的意思是啟用apache的rewrite引擎

RewriteRule表示重寫規則,第一個空格後面的是正則規范後面的news.php?type=$1&id=$2才是真正訪問的php頁面,$1表示前面正則規范的第一個子表達式的值,$2以此類推,這樣我們就可以在news.php取得參數的值

\

同樣的如果是控制器也可以在相應文件夾裡寫一個.htaccess,之後加上我們的重寫規則


5.使用.htaccess來控制訪問權限

日常的開發中我們可能在項目裡面寫了DAO,控制器,工具類這一大堆的php,而這些文件我們是不希望別人通過浏覽器訪問到,這種情況使用session來限制似乎也不奏效,這種情況使用重寫規則就很簡單了

RewriteRule [a-zA-Z0-9_]+\.class\.php 403.html

這樣寫一句程序之外訪問就跳轉到另外一個頁面,實現了訪問的控制

\

6.RewriteCond的使用

有時我們需要判斷在某種情況下才使用重寫,這種情況就要使用RewriteCond了,例如我們可以判斷請求的是不是一個文件(或不存在的文件),如果滿足條件才執行重寫規則

#如果請求的不是一個文件
RewriteCond %{REQUEST_FILENAME} !-f
#並且不是一個目錄
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ccc.html index.php

這段配置的意思就是如果請求的ccc.html如果不存在則跳轉到index,php

再來看最後一段配置


RewriteEngine On
#你怎麼知道,這個請求就是www.hsp.com發來的. referer
#如果你請求的是一個jpg圖片, 就禁止
RewriteCond %{HTTP_REFERER} !www.hsp.com  
RewriteRule .*\.jpg -[F]
[F]表示拒絕訪問,其他的看看注釋應該能看懂


最後總結一下,日常開發中並不是所有的頁面都要靜態化,例如後台系統、基金股票等要求實時性很高的頁面或網站、實時話費或流量查詢頁面、學歷查詢頁面不適合靜態化,對應內容相對穩定的例如宣傳性質的網站首頁可以考慮使用真靜態,如果不想使用真靜態但是又希望利於SEO偽靜態應該是一個不錯的選擇。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved