DiliCMS框架Nginx rewrite僞靜態配置

DiliCMS是開源的,面向CodeIgniter開發者的,自由靈活的後台系統,並致力于爲開發者提供最簡單,易擴展,實用的後台系統。


例子

代碼如下

server {
listen 80;
root /path/to/dilicms/;
index index.php;
server_name www.111cn.net;

location ~ ^(/(application|system|services|shared|admin/backup|admin/config|admin/controllers|admin/core|amdin/errors|admin/hooks|admin/language))/ {
deny all;
}

location / {

if ($request_uri ~* index/?$)
{
rewrite ^/(.*)/index/?$ /$1 permanent;
}

if (!-d $request_filename)
{
rewrite ^/(.+)/$ /$1 permanent;
}

set $admin '';

if ($request_uri ~* ^/admin/) {
set $admin A;
}

if ($request_uri ~* ^/install/) {
set $admin B;
}

if (!-e $request_filename) {
set $admin "X${admin}";
}

if ($admin = XA) {
rewrite ^/admin/(.*)$ /admin/index.php?/$1 last;
break;
}

if ($admin = XB) {
rewrite ^/install/public/(.*)$ /install/public/index.php?/$1 last;
}

if ($admin = X) {
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}

}


location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /path/to/dilicms$fastcgi_script_name;
include fastcgi_params;
}

location ~ /.ht {
deny all;
}
}

下面再整理一些關于nginx Rewrite的例子


習慣于只在Apache下使用.htaccess文件配置所有信息,通常會將下面規則

代碼如下

RewriteCond %{HTTP_HOST} example.org
RewriteRule (.*) http://www.example.org$1

翻譯成這樣:

代碼如下

server {
listen 80;
server_name www.example.org example.org;
if ($http_host = example.org) {
rewrite (.*) http://www.example.org$1;
}
...
}

這種做法是錯的,複雜而且低效。正確的方式是爲example.org定義一個單獨的伺服器:

代碼如下

server {
listen 80;
server_name example.org;
return 301 http://www.example.org$request_uri;
}

server {
listen 80;
server_name www.example.org;
...
}

在0.9.1版本(含)以前,可以這樣實現重定向:

代碼如下

rewrite ^ http://www.example.org$request_uri?;

再舉一個例子,處理一個和剛才相反的邏輯:既不是來自example.com,又不是來自www.example.com:

代碼如下

RewriteCond %{HTTP_HOST} !example.com
RewriteCond %{HTTP_HOST} !www.example.com
RewriteRule (.*) http://www.example.com$1

應該按下面這樣分開定義example.com、www.example.com和其他站點:

代碼如下

server {
listen 80;
server_name example.com www.example.com;
...
}

server {
listen 80 default_server;
server_name _;
return 301 http://example.com$request_uri;
}

在0.9.1版本(含)以前,可以這樣實現重定向:

代碼如下

rewrite ^ http://example.com$request_uri?;

更多相關文章
  • nginx rewrite 僞靜態地址自動補全的方法實現
    本文我們講講在nginx設置僞靜態時,如何目錄不存在如何自動實例路徑的問題,文章後面附加了nginx如何支付.htaccess文件的方法.nginx+php 使用的時候經常需要僞靜態,一般大家都手動設置.那有沒有辦法讓 nginx 自動補全路徑呢?這兩天折騰很久,才實現了這樣一個功能:請求 /a/b ...
  • iis下thinkphp配置url rewrite僞靜態圖解
    rewrite僞靜態配置方法很簡單我們在官方法,我是以前用apache過來的,所以不知道如何在iis中配置rewrite僞靜態了,于是找到了很久原來是需要自己載入 rewrite然後再寫在httpd.ini中才可以呀.客寫好了,用的tp框架,本地環境是Apache+mysql+php.其實猜到了wi
  • 使用linux或nginx伺服器的朋友可能會發現以前在apache環境寫的僞靜態規則到了nginx中不生效了,下面我來介紹 apache與nginx中的rewrite僞靜態規則區別1. Nginx Rewrite規則
  • WeCenter開啓 Rewrite 僞靜態方法詳解
    WeCenter 是一個類似知乎以問答爲基礎的完全開源的社交網路建站程序,基于 PHP +
  • Win7/Windows2003下IIS6.0、IIS7.5的僞靜態組件ISAPI_Rewrite安裝和僞靜態配置方法
    本文章來給各位同學介紹一下關于Win7/Windows2003下IIS6.0.IIS7.5的僞靜態組件ISAPI_Rewrite安裝和僞靜態配置方法,希望此教程對各位配置iis的僞靜態會有幫助.說實在的windows的伺服器是我最不喜歡的系統,所以一直以來做的很少,沒辦法,而這次就需要做Window
  • Windows2003 IIS6中WordPress僞靜態配置
    僞靜態是一種代替全靜態與動態文件比較好的一個東西,下面我來給大家介紹在Windows2003 IIS6中WordPress僞靜態配置過程,有需要的朋友可參考.網站根目錄下新建立一個httpd.ini文件,用記事本或是emeditor打開,規則寫在httpd.ini裏,如下:[ISAPI_Rewrit ...
  • 在nginx中的僞靜態規則與apache中的僞靜態規則差不多,但有些地方會有一點區別,下面我們來看我利用apache僞靜態規則寫的遭遇問題:directive "rewrite" is not terminated
  • phpcms nginx下僞靜態規則寫法
    nginx下僞靜態規則與在apache中有點一區別以前是我按apache的方法發現有一點問題,後來在網上找到一些方法下面給各位整理一下.我phpcms v9網站主機是華夏名網的,伺服器是nginx1.2.1的,我在自定義僞靜態裏面寫的僞靜態規則是rewrite ^tag/(.*) index.php ...
一周排行
  • php生成wsdl文件方法總結
    本文章來介紹利用php生成webservice常用的wsdl文件的方法總結,有需要了解的朋 ...
  • 一篇朋友很久前寫的asp.net中WebResponse 跨域訪問示例,下面我轉過來與大家一起學習學習,希望文章對大家會有幫助.前兩天,一個朋友讓我幫他寫這樣一個程序:在asp.net裏面訪問asp的頁面,把數據提交
  • 快捷菜單用于當用戶右擊控件時爲用戶提供上下文特定的菜單選項.在派生類中重寫 ContextMenu 屬性時,請使用基類的 ContextMenu 屬性來擴展基實現. 否則,您必須提供所有實現.ContextMenu
  • win10系統10547預覽版藍屏重啓如何解決
    升級windows10之後經常會有朋友反應出各種問題了,我們今天一起來看看關于win10系 ...
  • 本文章來給大家介紹利用C#中OpenFileDialog 與FolderBrowserDialog來實現 C#選擇文件,C#選擇文件夾的過程,有需要了解的朋友可參考. 代碼如下 //選擇 private void b
  • 在我看這文章之前我對于undefined與null有什麽區別都不必,以爲他們是一樣的後來我者知道在js中undefined是一個變量類型,而null是一個空值,下面我們一起來看看它們的區別了.其實標題裏面我已經列出了
  • 榮耀7i無法識別sim卡問題解決辦法
    榮耀7i無法識別sim卡問題我們可以通過許多的方面來進行解決了,如果你也碰到這種問題可以和 ...
  • 這裏我們利用jquery ajax getjson函數來操作調用js返回的json數據並進行分析,賦給html頁面啊,下面來看看這三個實例吧.例如:負載從test.js,從返回的json數據訪問json數據的名稱$.
  • Replace 函數 描述 返回字符串,其中指定數目的某子字符串被替換爲另一個子字符串.語法Replace(expression, find, replacewith[, compare[, count[, star
  • 歡迎來到我們的免費虛擬主機:這是免費的虛擬主機提供高品質伺服器,偉大的正常運行時間,注冊爲我們的廣告免費的mysql教程 / php教程的免費虛擬主機給您.免費虛擬主機功能:- 豐盛的免費網頁空間爲您的文件!- 10