標籤作用:配置程式偽靜態後URL中將不再包含index.php,整個地址更美觀

1、IIS環境(IIS6的環境自行百度):

1)安裝rewrite元件,如果使用空間一般空間商預設已經安裝;

2)到後臺配置引數中開啟偽靜態開關(老版本直接修改程式config/config.php檔案url_type=2);

3)在站點目錄建立web.config檔案(老版本根目錄下預設已有,去除字尾bak即可,新版本到rewrite目錄下複製規則),手動建立的話規則如下:

<rewrite><rules>
<rule name="reIndex" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="REQUEST_FILENAME" matchType="IsDirectory" negate="true" />
<add input="REQUEST_FILENAME" matchType="IsFile" negate="true" /></conditions>
<action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>

2、Apache環境

1)開啟Apache重寫模組,具體請百度,如果使用空間一般空間商預設已經開啟;

2)到後臺配置引數中開啟偽靜態開關(老版本直接修改程式config/config.php檔案url_type=2);

3)在站點目錄建立.htaccess檔案(老版本根目錄下預設已有,新版本到rewrite目錄下複製規則),內容如下:

<IfModule mod_rewrite.c>
 Options +FollowSymlinks
 RewriteEngine On
 RewriteCond %REQUEST\_FILENAME !-d
RewriteCond %REQUEST\_FILENAME !-f
#如果頁面出現"No input file specified." 請註釋第一條,啟用第二條
RewriteRule ^(.\*)$ index.php/$1 \[QSA,PT,L\]
#RewriteRule ^(.\*)$ index.php \[E=PATH\_INFO:$1,QSA,PT,L\]

2、Nginx環境

1、到後臺配置引數中開啟偽靜態(老版本直接修改程式config/config.php檔案url_type=2);

2、在nginx虛擬主機location配置中新增規則,規則如下:

    location / {  
  if (!-e $request_filename){  
  rewrite ^/(.)$ /index.php/$1 last;     
      }   
 }

注意:Nginx中如果站點部署在二級目錄,請對應修改重寫規則, 如:二級目錄為test則:rewrite ^/test/(.)$ /test/index.php/$1 last;

附:nginx開啟PHP及pathinfo支援的方法,在server內部新增如下內容:

location ~ \.php(.*)$ {
root D:/wwwroot;  #你的網站目錄
fastcgi_pass 127.0.0.1:9000;  #php-cgi監聽地址
fastcgi_index index.php;  #預設頁
fastcgi_split_path_info ^(.+\.php)(.*)$;  #分離路徑
fastcgi_param PATH_INFO $fastcgi_path_info;  #新增PATH_INFO資訊
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}