php中使用偽靜態_PHP教程

來源:互聯網
上載者:User
上次簡單的說了下php中Regex的使用,這一次Regex可以派上用場了,學習偽靜態需要能夠很好的使用Regex,那麼偽靜態和真靜態區別是什麼呢,我覺得應該是偽靜態可以節約磁碟空間、利於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偽靜態應該是一個不錯的選擇。



http://www.bkjia.com/PHPjc/621636.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/621636.htmlTechArticle上次簡單的說了下php中Regex的使用,這一次Regex可以派上用場了,學習偽靜態需要能夠很好的使用Regex,那麼偽靜態和...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.