Apache開啟PHP的偽靜態模式

2022-02-23 03:11:15 字數 2775 閱讀 1235

首先,什麼是偽靜態:

偽靜態又名url重寫,是動態的**看起來像靜態的**。換句話說就是,動態網頁通過重寫 url 方法實現去掉動態網頁的引數,但在實際的網頁目錄中並沒有必要實現存在重寫的頁面。

1.檢測apache是否支援mod_rewrite

通過php提供的phpinfo()函式檢視環境配置,通過ctrl+f查詢到「loaded modules」,其中列出了所有

apache2handler已經開啟的模組,如果裡面包括「mod_rewrite」,則已經支援,不再需要繼續設定。

如果沒有開啟「mod_rewrite」,則開啟目錄 您的apache安裝目錄「/apache/conf/」 下的 httpd.conf 文

件,通過ctrl+f查詢到「loadmodule rewrite_module」,將前面的」#」號刪除即可。

如果沒有查詢到,則到「loadmodule」 區域,在最後一行加入「loadmodule rewrite_module modules/mod_rewrite.so」(必選獨佔一行),然後重啟apache伺服器即可。

2.在httpd.conf中配置虛擬主機

# virtual hosts 啟用虛擬主機

3.httpd_vhosts.conf檔案中,配置相應的選項.詳細講解

documentroot "c:/myenv/apache/htdocs/static3"

servername www.hsp.com

#deny from all 403錯誤提示

allow from all

#如果檔案目錄在apache目錄外面,注釋掉optinos 則,不能列表.

options +indexes

#下面這個表示可以去讀取 .htaccess檔案,也可以直接在虛擬主機中配置.

allowoverride all

rewriteengine on

rewriterule news-id(\d+).html$ error.php?id=$1

#這裡可以設定多個重寫的規則

#rewriterule news-id.html$ error.php

4.在相應的目錄下編寫.htaccess 重寫規則

例子:

rewriteengine on

rewriterule news-id(\d+).html$ show.php?id=$1

#這裡可以設定多個重寫的規則

#rewriterule news-id.html$ error.php

如果在linux下可以直接建立,

如果是在windows平台下,用記事本建立乙個檔案,比如abc.txt,然後另存為 .htaccess檔案即可

5.重寫規則,也可以直接在配置虛擬主機的段配置.

動態、靜態、偽靜態之間的利與弊(新)

動態**

首先,動態**目前對於google來說,「不能被抓取」的說法是錯誤的,google能夠很好的處理動態**並順利抓取;其次「引數不能超過3個」的說法也不正確,google能夠抓取引數超過3個的動態**,不過,為了避免url太長應儘量減少引數。

其次,動態**有其一定的優勢,以上面所說的 news.php?lang=cn&class=1&id=2 為例,**中的引數準確的告訴google,此url內容語言為cn、隸屬於分類1、內容id為2,更便於google對內容的識別處理。

最後,動態**應盡量精簡,特別是會話標識(sid)和查詢(query)引數,容易造成大量相同頁面。

靜態**

首先,靜態**具有的絕對優勢是其明晰,/product/nokia/n95.html和/about.html可以很容易被理解,從而在搜尋結果中可能點選量相對較高。

其次,靜態**未必就是最好的**形式,上述動態**中說到,動態**能夠告訴google一些可以識別的引數,而靜態**如果文件布置不夠恰當(如:過於扁平化,將html文件全放在根目錄下)及其他因素,反而不如靜態**為google提供的參考資訊豐富。

最後,樂思蜀覺得google此文中是否有其隱藏含義?「更新此種型別**的頁面會比較耗費時間,尤其是當資訊量增長很快時,因為每乙個單獨的頁面都必須更改編譯**。」雖然所說的是**,但在google系統中是否同樣存在這樣的問題呢?

偽靜態**

首先,偽靜態**不能讓動態**「靜態化」,偽靜態僅僅是對動態**的乙個重寫,google不會認為偽靜態就是html文件。

其次,偽靜態可取,但應把重心放在去除冗餘引數、規範url、盡可能的避免重複頁上。

最後,偽靜態有很大潛大危險,最好在對**系統、**結構、內容分布、引數意義熟悉的情況下使用。

在寫偽靜態規則時,應保留有價值的引數,不要將有價值的引數全部精簡掉,如前面例子中的 news.php?lang=cn&class=1&id=2 最好重寫為 news-cn-class1-id2.html,而不是過份精簡重寫為 news-2.html。

再就是偽靜態中一定不能包含會話標識(sid)和查詢(query)引數,/product.asp?sid=98971298178906&id=1234 這樣的動態**,其中的sid本來google能夠識別並遮蔽,但如果重寫為 /product/98971298178906/1234,google不但無法識別,還在整站中造成無限重複頁面(每個會話都會產生乙個新的會話id)。

文章摘自其他部落格,存檔學習

Apache開啟偽靜態

開啟apache的配置檔案httpd.conf 找到 loadmodule rewrite module modules mod rewrite.so 把前面 去掉。沒有則新增,但必選獨佔一行,使apache支援 mod rewrite 模組找到 possible values for the op...

Apache開啟偽靜態

apache開啟偽靜態 loadmodule rewrite module modules mod rewrite.so 把前面 去掉。沒有則新增,但必選獨佔一行,使apache支援 mod rewrite 模組找到 possible values for the options directive...

Apache 開啟偽靜態

網上的資料雖多但是不是所有的都是能夠解決自己問題的,乙個偽靜態花掉了我一兩個小時去弄他,反覆的修改配置檔案,真的很坑!網上大致有兩個說法,乙個是在網頁根目錄下找到.htaccess檔案並修改,但是我找了一會兒始終沒有找到這個檔案,可能是我自己的方法不對,所以這個方法我就放棄了。還有一種就是修改 ap...