## 偽靜態配置
標簽作用:配置程序偽靜態后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;
}
~~~