layout: post
title: "Nginx下ThinkPHP應(yīng)用Url重寫(xiě)"
date: 2016-05-16 23:36:12 +0800
comments: true
categories: [nginx]
在調(diào)Nginx的虛擬主機(jī)時(shí)發(fā)現(xiàn)却桶,我之前的TP改寫(xiě)的商城沒(méi)放過(guò)來(lái)(之前掛載BAE上),把BAE上的項(xiàng)目移植過(guò)來(lái)過(guò)后發(fā)現(xiàn)卖鲤,只能訪問(wèn)主頁(yè)其他頁(yè)面全部都報(bào)404錯(cuò)誤
到處查資料過(guò)后發(fā)現(xiàn)肾扰,是因?yàn)閚ginx下ThinkPHP應(yīng)用的url重寫(xiě)和Apache有點(diǎn)不一樣。
官方手冊(cè)說(shuō)在Nginx低版本中蛋逾,是不支持PATHINFO的集晚,但是可以通過(guò)在Nginx.conf中配置轉(zhuǎn)發(fā)規(guī)則實(shí)現(xiàn):
<pre class="prettyprint linenums">
location / { // …..省略部分代碼
if (!-e request_filename) { rewrite ^(.*) /index.php?s=$1 last;
break;
}
}
</pre>
但是好像對(duì)我并不適用,在網(wǎng)上找到一篇博文成功解決了問(wèn)題区匣。
按照博文的方法在我的虛擬主機(jī)配置中(/etc/nginx/conf.d/shop.ewanreton.cn.conf)添加了如下代碼:
<pre class="prettyprint linenums">
location / {
root /usr/share/nginx/html/shop;
index index.html index.htm index.php;
if (!-e request_filename) { rewrite ^/index.php(.*) /index.php?s=1 last; rewrite ^(.*) /index.php?s=$1 last;
break;
}
}
</pre>
這里我僅僅對(duì)我用ThinkPHP框架寫(xiě)的應(yīng)用進(jìn)行了配置偷拔,如果需要所有都配置的話蒋院,推薦直接寫(xiě)在Nginx的配置文件中。
雖然解決了這個(gè)問(wèn)題莲绰,但是對(duì)這個(gè)問(wèn)題的核心還是沒(méi)有搞太懂欺旧,以后深入學(xué)習(xí)過(guò)后再回來(lái)補(bǔ)充這篇文章。