標籤作用:配置程式偽靜態後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;
}