當前位置:編程學習大全網 - 圖片素材 - phpStudy中nginx建DZ2.5怎麽設置偽靜態怎麽都不成功

phpStudy中nginx建DZ2.5怎麽設置偽靜態怎麽都不成功

Nginx(發音同 engine x)由 Igor Sysoev 用C語言為俄羅斯訪問量第二的搜索引擎 Rambler.ru 站點開發,是壹款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3/SMTP)代理服務器,其將源代碼以類BSD許可證的形式發布,並在壹個BSD-like 協議下發行。其特點是小巧高效,占有內存少,並發能力強,事實上Nginx的並發能力確實在同類型的網頁服務器中表現較好。中國大陸使用Nginx網站用戶有:新浪、網易、淘寶、騰訊等。Nginx第壹個公開版本0.1.0發布於2004年10月4日。因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,Nginx 1.0.4發布。由此可以看出使用LNMP架構的好處。

關於偽靜態技術,最初是動態語言出現後為了解決用戶訪問的便利性和搜索蜘蛛的友好性。關於偽靜態的組件有ISAPI_Rewrite、開源的IIRF等。但ISAPI_Rewrite Lite版只支持全局的httpd.conf的,不支持分布式的httpd.ini的,只有收費的Full版才支持分布式httpd.ini。現在我們知道,Nginx也能實現簡單的偽靜態。更多介紹偽靜態可以參考

CI在Apache、Nginx上運行需要.htaccess配置文件,在IIS服務器上則需要web.config文件,CI的偽靜態我們可以通過.htaccess裏面的規則設定

RewriteEngine on

RewriteCond $1 !^(index\\.php|system\\.php|images|skin|js|ls|swfupload|attachment|application|robots\\.txt)

RewriteRule ^(.*)$ /fx/index.php/$1 [L]

註: RewriteRule ^(.*)$ /webdir/index.php/$1 [L]裏的webdir是妳的CI程序目錄

Nginx服務器偽靜態設置首先需要設置nginx開啟 path_info (LNMP默認已開啟)

,可以參考以下來自ZK的方法:

假設我們的子目錄名稱為 zk

location /zk/ {

root /var/www/html/;

index index.html index.htm index.php;

if ($request_filename !~* /giftbox/(javascript|css|images|style|upimg|artDialog|fckeditor|userfiles|crontab|robots\.txt|index\.php)) {

rewrite ^/(.*)$ /zk/index.php?$1 last;

}

root 的目錄路徑為您的根目錄路徑 不需要更改。

另外附上主目錄偽靜態規則

#rewrite ^/$ /index.php last;

#壹下是防止某些文件夾被直接訪問

#rewrite ^/(?!index\.php|images|robots\.txt|js|css|upimg|artDialog|style)(.*)$ /index.php/$1 last;

首先需要設置nginx 開啟 path_info (lnmp默認已經開啟path_info)

偽靜態規則:

if ($request_uri ~* ^/system)

{

rewrite ^/(.*)$ /index.php?/$1 last;

break;

}

if (!-e $request_filename)

{

rewrite ^/(.*)$ /index.php?/$1 last;

break;

}

在網上查到的資料很多人都說nginx目前不支持.htaccess文件來做偽靜態,小子也覺得不應該,作為世界上輕量級最好用的WEB服務器,Nginx應該可以的,谷歌了壹下,找到了nginx完全可以支持.htaccess文件的資料,其實linux下的文件是沒有擴展名區別的,而針對nginx的偽靜態配置文件更是沒有名稱的區別,只要指定相應路徑即可,具體步驟請按如下操作:

1、新建壹個.htaccess文件,在裏面輸入規則,如:

# nginx rewrite rule rewrite ^(.*?)/article/.*?-(\d+)-(\d+)\.html$ $1/show.html?id=$2&page=$3 break; rewrite ^(.*?)/category/.*?-(\d+)-(\d+)\.html$ $1/list.html?id=$2&page=$3 break; rewrite ^(.*?)/tag/([^/]+)/?$ $1/tag.html?w=$2 break; <span id="more-1758"></span>rewrite ^(.*?)/tag/([^/]+)/(\d+)$ $1/tag.html?w=$2&page=$3 break; # end nginx rewrite rule

保存文件並上傳到網站的根目錄。

2、修改虛擬主機配置

# ee /usr/local/etc/nginx/nginx.conf #freebsd 7.2默認nginx默認安裝的配置文件

在妳需要添加偽靜態的虛擬機中的server塊中引入.htaccess文件

include /usr/www/.htaccess #請把這個改成妳.htaccess文件的位置,

保存、退出重啟nginx

# /usr/local/etc/rc.d/nginx restart

刷新看看,如果能正常器從證明妳的rewrite rule的語法是正確

nginx的rewrite規則您可以直接放在主機配置中也可以放在獨立的文件用includeinru,存為獨立的文件時,保存到壹個新的文件(文件名可以任意取,不過建議還是用.ht(註意有個“點”)開頭的文件名,因為這個服務器裏面默認過濾了外部對.ht開頭的文件訪問:

location ~ /\.ht {

deny all;

}

CI的htaccess配置

最近突然想把鏈接中的index.php去掉,網上搜索了壹把,發現解決方法很多,整理下。

首先是兩個基本修改點:

1. 在httpd.conf中,將 所有 AllowOverride None 改為 AllowOverride All 好像***有三處吧,然後重啟apache

2. 將 config.php中的 $config['index_page'] = 'index.php'; 改為 $config['index_page'] = '';

然後根據具體配置:

3.1 如果站點直接位於服務器根目錄下,如/www/ 那如下配置就行:

RewriteEngine on

RewriteCond $1 !^(index\.php|robots|stafile|upload|\.txt)

RewriteRule ^(.*)$ /index.php/$1 [L]

3.2 如果設置了別名,則加上 RewriteBase /別名/

3.3 如果位於根目錄下的二級目錄,則修改Rewrite Rule為:

RewriteEngine on

RewriteCond $1 !^(index\.php|robots|stafile|upload|\.txt)

RewriteRule ^(.*)$ /mysite/index.php/$1 [L]

  • 上一篇:平郵、郵政快遞、 EMS、 E郵寶的區別是什麽
  • 下一篇:求ahk鼠標左鍵連發,按下左鍵壹直連點松開結束!
  • copyright 2024編程學習大全網