php url模式在哪修改,如何在nginx环境中启用php的pathinfo URL模式[修正]
我們在安裝lnmp一鍵安裝的時候,一般都沒有開啟pathinfo訪問模式
這種模式在比較多的框架中用到,比如國人的ThinkPHP,還比如C寫的Yaf也用到,不支持就比較可惜了。
pathinfo的原理就是將index.php/xxxx/xxx類似的網(wǎng)址當(dāng)做php來執(zhí)行,并且需要將xxx/xxx寫入到$_SERVER[‘PATH_INFO’]中
這個是lnmp.org(我裝的就是這個,所以我以這個為例子)開出來的虛擬機(jī)的配置中的一段(vhost/***.conf),修改nginx配置文件也是這樣修改location?~?.*\.(php|php5)?$
{try_files?$uri?=404;fastcgi_pass??unix:/tmp/php-cgi.sock;fastcgi_index?index.php;include?fcgi.conf;
}
大家明顯看到,location中的正則中,寫了一個$,悲劇了,表示就此結(jié)束(?表示前面的php只匹配一次,這個只是隨便提提)
最終,應(yīng)該如此處理(location那行也修改了,因為我沒有用到php5處理):if?(!-e?$request_filename)
{
rewrite?^\/([^\.]*)$?/index.php/$1?last;break;
}
location?~?\.php
{
try_files?$uri?=404;
fastcgi_pass??unix:/tmp/php-cgi.sock;
fastcgi_index?index.php;
include?fcgi.conf;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;
}
后面的部分處理我是參考的網(wǎng)絡(luò)上搜索到的文檔,我特意帶注釋版告訴大家,這是別人沒有說的
這是別人沒有說的location?~?\.php
{try_files?$uri?=404;fastcgi_pass??unix:/tmp/php-cgi.sock;fastcgi_index?index.php;include?fcgi.conf;set?$path_info?"";#初始化一個變量
set?$real_script_name?$fastcgi_script_name;#初始化一個變量,并且獲取到一個原始賦值
if?($fastcgi_script_name?~?"^(.+?\.php)(/.+)$")?{#檢測如果.php后面還存在/開始參數(shù),將參數(shù)處理
set?$real_script_name?$1;#將第一個正則子串匹配到的賦值
set?$path_info?$2;#將第二個正則子串匹配到的賦值
}fastcgi_param?SCRIPT_FILENAME?$document_root$real_script_name;#修改SCRIPT_FILENAME值
fastcgi_param?SCRIPT_NAME?$real_script_name;#修改SCRIPT_NAME值
fastcgi_param?PATH_INFO?$path_info;#修改PATH_INFO值
#上述三個賦值都是replace?into的模式,這些值都是寫在fcgi.conf中
}
總結(jié)
以上是生活随笔為你收集整理的php url模式在哪修改,如何在nginx环境中启用php的pathinfo URL模式[修正]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php类退出魔术方法,php类中常用的魔
- 下一篇: 披马甲送福利~~免费帮各位TYER们看淘