1. 鎬庝箞鍐.htaccess浼闈欐佹枃浠舵墠鍙浠ュ幓鎺塸hp鐨勫悗緙.php
<IfMole mod_rewrite.c>
RewriteEngine on
RewriteRule ^version/ /version.php
</IfMole>
2. PHP偽靜態問題,PHP偽靜態是如何實現的
偽靜態必須靠rewrite來實現,
例如將/document/123.html rewrite到document.php?document_id=123
這樣是為了搜索引擎優化和URL和具體調用的PHP分離
如果不支持rewrite看支持.htaccess嗎?
如果支持的話就在根目錄下建立一個.htaccess在里邊寫rewrite規則
如果也不支持的話,只能換空間了
3. 求php偽靜態規則htaccess文件的寫法。
# apache偽靜態規則
將index.php?a=admin&c=login 偽裝成admin/login.htm
RewriteRule ^([a-zA-Z_]+)/([a-zA-Z_]+).html$ index.php?a=$1&c=$2
將index.php?c=message 偽裝成message.html
RewriteRule ^([a-zA-Z_]+).html$ index.php?c=$1
將index.php?c=message&p=2 偽裝成message.html?p=2
RewriteRule ^([a-zA-Z_]+).html?p=([0-9]+)$ index.php?c=$1&p=$2
其餘的就不寫了,差不多都是這個意思,如果還不會最好看看關於正則的地方
4. php 偽靜態規則
1、要能夠實現偽靜態,伺服器環境本身支持url rewrite重寫功能,能正確識別出以路徑符號 "/" 為間隔的url地址,這是必要的條件。
以apache為例說明如可開啟偽靜態:打開apache的配置文件(apache/conf/httpd.conf)找到對應的web目錄配置項,修改為如下:
<Directory "YourDocumentRoot"> //前面的YourDocumentRoot改為你自己的web路徑
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
注意:確保 AllowOverride 為 All
重啟服務即可。
2、在你的web目錄下添加一個.htaccess文件,在裡面添加代碼如下:
<IfMole mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|robots\.txt|tags)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfMole>
3、再試一下就可以的了,如果不行先看一下自己的PHP版本,最好是5.0以上的,.htaccess文件的代碼也調試一下。
5. PHP本地如何實現偽靜態頁面
Apache的 mod_rewrite是比較強大的,在進行網站建設時,可以通過這個模塊來實現偽靜態。
主要步驟如下: 1.檢測Apache是否開啟mod_rewrite功能 可以通過php提供的phpinfo()函數查看環境配置,找到「Loaded Moles」,其中列出了所有apache2handler已經開啟的模塊,如果裡麵包括「mod_rewrite」,則已經支持,不再需要繼續設置。如果沒有開啟「mod_rewrite」,則打開目錄 apache目錄下的「/apache/conf/」 ,找到 httpd.conf 文件,再找到「LoadMole rewrite_mole」,將前面的」#」號刪除即表示取用該功能。 如果沒有查找到「LoadMole」 區域,可以在最後一行加入「LoadMole rewrite_mole ,moles/mod_rewrite.so」(獨佔一行),之後重啟apache伺服器。再通過phpinfo()函數查看環境配置就有「mod_rewrite」為項了.。
2.讓apache伺服器支持.htaccess 如何讓自己的本地APACHE伺服器支持:「htaccess」呢? 只需修改apache的httpd.conf設置就可以讓 APACHE支持「.htaccess」了。打開 APACHE目錄的CONF目錄下的httpd.conf文件,找到: Options FollowSymLinks AllowOverride None 改為 Options FollowSymLinks AllowOverride All 就行了。
3.建立.htaccess 文件 建立.htaccess文件時要注意,不能直接建,方法是通過記事本中的另存為菜單,在文件名窗口輸入:「.htaccess」,然後點擊保存。
4.rewrite規則學習 在新建.htaccess文件之後,就在裡面寫入以下內容: RewriteEngine on #rewriteengine為重寫引擎開關on為開啟off為關閉 RewriteRule ([0-9]{1,})$index.php?id=$1 在這里,RewriteRule是重寫規則,是用正則表達式的句子,([0-9]{1,})表示由數字組成的,$表示結束標志,表示以數字結束!如果要實現偽靜態頁面,規則如下: RewriteEngine on RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2 在為個正則表達式中,([a-zA-Z]{1,})-([0-9]{1,}).html$是規則,index.php?action=$1&id=$2是要替換的格式,$1代表第1括弧匹配的值,$2代表第二個括弧的值,如此類推! 測試PHP腳本如下: index.php文件中的代碼如下: echo 『你的Action值為:』 . $_GET['action']; echo 『 』; echo 『ID值為:』 . $_GET['id']; ?>
在瀏覽器地址欄輸入: localhost/page-18.html 輸出的是: 你的Action值為:page ID值為:18
6. 如何利用.htaccess文件對PHP網站或文件進行偽靜態處理
一、檢查伺服器是否支持偽靜態處理:
必須要空間支持 Rewrite 以及對站點目錄中有 .htaccess
的文件解析,才有效.找到apache安裝目錄下的httpd.cof文件,去掉LoadMole rewrite_mole
moles/mod_rewrite.so前面的#(大概在154行,我的默認是開啟)
二、在httpd.cof中查找以下部分:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
改為:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
如果沒有,手動添加。(PS:LZ試過,在最近的新版本的Apache上即使沒有這個,.htaccess照樣生效。但是不同伺服器及版本的原因,建議加上)
三、重啟apache伺服器,添加.htaccess文件
建立.htaccess文件的方式:
1、保存文件的時候將文檔保存成名為「***.txt」,再將其上傳到伺服器上,之後直接使用FTP軟體來重命名為「.htaccess」。(適合windows)
2、保存文件的時候選擇文件—>另存為,保存類型選所有文件,然後文件名輸入.htaccess 。(適合windows)
3、直接在你的Unix或Linux虛擬主機上建立。
4、先用記事本編寫好,隨便保存為一個什麼文件名,然後打開「命令提示符」(CMD),然後再用重命名命令(rename),例如:rename c:\htaccess.txt .htaccess
請注意: .htaccess必須,保存為ANSI 格式,以ASCII模式上傳,最好將其許可權設置為644。
一般我們將.htaccess文件放置在網站的根目錄,控制所在目錄及所有子目錄,當然也可以放在網站的任何一個子目錄下,但如果放置在子目錄中,子目錄中的指令會覆蓋更高級目錄或者主伺服器配置文件中的指令。
在博客收錄集(http://www.ido321.com/1112.html)為例,本地.htaccess文件如下:
#rewriteengine為重寫引擎開關on為開啟off為關閉
RewriteEngine On
RewriteRule ^index\.html$ index.php
RewriteRule ^webmore\.html$ webmore.php
以index.html代替index.php webmore.html代替webmore.php。
.htaccess支持正則表達式,例如:
原始 news/detail.php?id=2 偽靜態 news/detail_2.html
RewriteRule ^news/detail_([0-9]{1,})\.html$ news/detail.php?id=$1