php偽靜態規則
❶ phpstudy偽靜態設置該怎麼做
一、開啟Mod_rewrite模塊
點擊任務欄中的phpstyudy圖標,選擇「配置文件」--「httpd-conf」
搜索 LoadMole rewrite_mole moles/mod_rewrite.so (Apache2是這個)
去掉前面的#
搜索AllowOverride None 替換為 AllowOverride All
有好幾個找到和下面代碼類似的那個
</IfMole>
#
# "D:usrlocalApache2cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "D:usrlocalApache2cgi-bin">
AllowOverride All
Options None
Order allow,deny
Allow from all
</Directory>
二 、在Apache2confhttpd.conf 最後一行添加:
<IfMole mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2 (這里是httpd.ini裡面的偽靜態規則)
</IfMole>
然後重新Apache後就可以正常使用了。
❷ thinkphp 偽靜態 nginx 規則怎麼設置
關於nginx的偽靜態設置(案例)
server {
listen 80;
server_name localhost;
index index.html index.htm index.php;
root /alidata/www/;
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php?s=/$1 last;
}
}
location ~ .*.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
# 以下是為了讓Nginx支持PATH_INFO
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param script_FILENAME $document_root$real_script_name;
fastcgi_param script_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_connect_timeout 120;
fastcgi_send_timeout 120;
fastcgi_read_timeout 120;
fastcgi_buffers 8 128K;
fastcgi_buffer_size 128K;
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*.(js|css)?$
{
expires 1h;
}
#偽靜態規則
access_log /alidata/log/nginx/access/default.log;
}
❸ php偽靜態 和 php模板 區別在哪,怎樣做php偽靜態。
php偽靜態 是把你的鏈接改成 html後綴之類的,從鏈接上看起來像靜態的頁面。
php模板只是提供給php程序顯示數據的,php模板雖然可以是htm格式,但是在打開網頁的時候仍然是php格式的。
PHP實現偽靜態化頁面方法一:
在你的程序初始化時使用如下代碼:
<?php
$Php2Html_FileUrl = $_SERVER["REQUEST_URI"];
$Php2Html_UrlString = str_replace("/", "", strrchr($Php2Html_FileUrl, "/"));
$Php2Html_UrlQueryStrList = explode("@", $Php2Html_UrlString);
foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)
{
$Php2Html_TmpArray = explode("|", $Php2Html_UrlQueryStr);
$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
}
echo '假靜態:$_GET變數<br />';
print_r($_GET);
?>
然後php中調用$_GET變數就像平常一樣了。
連接使用方式:
****.php/param1|1234@param2|4321
和****.php?param1=1234?m2=4321一樣。
PHP實現偽靜態化頁面方法二:通過URL Rewrite實現鏈接靜態化
我們知道搜索引擎對於靜態頁面是非常友好的,因此很多網站通過生成靜態頁面等手段方便爬蟲抓取自己網站的內容。但是有時候一些應用並不適合全部靜態化,比如數據變化非常大的論壇/貼吧系統,這時候我們可以通過URL重寫來實現鏈接的偽靜態化,即網站對外使用靜態化的鏈接,而內部實際上仍然使用動態頁面的 URL形式。比如像這樣一個鏈接:http://www.ci123.com/abc.php?action=a&id=1,我們可以改寫成http://www.ci123.com/abc/a/1.html的形式。這是搜索引擎優化最重要的內容之一,它還有一個額外的好處,可以使頁面有一個永久鏈接,即便以後網站系統內部鏈接有變化,通過適當改變Rewrite規則就可以保證原先的外部URL一直有效。
下面介紹2種簡單的Apache+PHP下實現URL重寫的方法,第一種適合有伺服器配置許可權的用戶,第二種適合租用空間的用戶,也作為我近期的學習心得的整理。
1、對於有伺服器配置許可權的用戶,推薦使用Apache的mod_rewrite模塊,這里假設已經安裝好mod_rewrite模塊。打開Apache的配置文件,找到相應主機的部分,添加以下代碼:
RewriteEngine On RewriteRule ^/abc/([a-z]+)/([0-9]+).html$ /abc.php?action=$1&id=$2
然後在shell里執行service httpd reload,讓Apache重新載入配置就好了。現在在PHP頁面裡面我們可以把鏈接寫成 abc/a/1.html的形式,Apache在解析這個 URL的時候會rewrite成abc.php?action=a&id=1的形式,並返回正確的頁面。運用正則表達式我們可以實現幾乎任何我們想要的鏈接形式,mod_rewrite模塊的功能異常強大,這里只是一個及其簡單的應用。
2、對於租用空間的用戶,一般都沒有辦法修改Apache的配置,這里有個變通的方法,原理是這樣的:當要傳遞參數訪問PHP 頁面時,正常情況下是通過自動全局變數$_GET來獲得,比如上面的鏈接,在頁面里可以通過$_GET['action'] 和 $_GET['id'] 來獲得,重寫URL後就不行了。現在在每個頁面里require一個url_rewrite.php文件,裡面代碼如下:
$filename = basename($_SERVER['SCRIPT_NAME']);
if (strtolower($filename) == "abc.php"){
if (!empty($_GET[id])){
$id = intval($_GET[id]);
$action = intval($_GET[action]);
}
else {
$nav = $_SERVER["REQUEST_URI"];
$script = $_SERVER["SCRIPT_NAME"];
$nav = ereg_replace("^$script", "", urldecode($nav));
$vars = explode("/", $nav);
$action = intval($vars[1]);
$id = intval($vars[2]);
}
}
這樣$action和$id也得到了,頁面里鏈接可以寫成abc.php/a/1的形式來訪問相應頁面。
需要注意的是這種PHP實現偽靜態化頁面方法效率較第一種低,第一種方法是在WEB伺服器URL解析過程中實現的,而這里是在PHP頁面解析過程里實現的,第2種方法只是變通,不得已而為之,要修改鏈接形式很不方便也不靈活。
❹ phpstudy偽靜態設置該怎麼做
打開配置文件 httpd-conf
按 CTRL+F 查找
AllowOverride None
將其替換為
AllowOverride All
然後繼續查找Options FileInfo AuthConfig Limit
將其下面的AllowOverride None也改為AllowOverride All。
保存後,重啟Apache。在網站(根)目錄下添加.htacces文件測試下,你的phpstudy已經可以支持.htaccess偽靜態了!