通常的 URL 里面含有 index.php,為了達到更好的 SEO 效果可能需要去掉URL里面的 index.php ,通過 URL 重寫的方式可以達到這種效果,通常需要服務器支持。
測試環境為 Win7 ,使用的是 xampp-win32-5.6.21 集成環境,自帶 Apache 服務器,安裝目錄為 D:\xampp\ 。
# 1):Apache 服務器
配置 .htaccess 文件放到 index.php 的同級目錄下
~~~
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
~~~
修改 D:/xampp/apache/conf/httpd.conf 中,搜索 LoadModule rewrite_module modules/mod_rewrite.so
~~~
#LoadModule rewrite_module modules/mod_rewrite.so
~~~
去掉前面的 #
~~~
LoadModule rewrite_module modules/mod_rewrite.so
~~~
搜索 <Directory />
~~~
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
~~~
AllowOverride None 改為 AllowOverride All
~~~
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
~~~
# 2):Nginx 服務器
### xampp 安裝 Nginx
打開控制臺,關閉 xampp 的 apache 服務, Nginx 也使用 80 端口,這里我們下載一個 nginx-v1.10.2 解壓到 D:\xampp\nginx
為了啟動 Nginx,我們需要允許 php 以 cgi 方式執行,為了不影響 Apache 的配置,復制 D:\xampp\php\php.ini 至 D:\xampp\php\php-nginx.ini,并修改配置如下:
~~~
enable_dl = On
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1
~~~
CMD 運行 php-cgi
~~~
D:\xampp\php\php-cgi.exe -b 127.0.0.1:9000 -c D:\xampp\php\php-cli.ini
~~~
> 注意:如果報錯,請換一個端口將 9000 改為 9001 等然后再次運行。
CMD 運行 Nginx
~~~
切換到目錄
D:\xampp\nginx>
執行
D:\xampp\nginx>nginx
~~~
注意:然后訪問 localhost 可以看到 Nginx 是否已經運行。
停止 Nginx 可以運行
~~~
taskkill /F /IM nginx.exe > nul
taskkill /F /IM php-cgi.exe > nul
~~~
### path_info 支持
打開配置文件 D:/xampp/nginx/conf/nginx.conf 搜索 #location ~ \.php
~~~
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
~~~
修改為
~~~
location ~ \.php {
# path_info 支持
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
# 網站根目錄
root D:/newphp/queryphp/www;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
~~~
配置 rewrite 規則
搜索關鍵字 #access_log
~~~
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
~~~
修改為
~~~
# 重寫url地址
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php/$1;
#rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
}
#access_log logs/host.access.log main;
location / {
# 網站根目錄
root D:/newphp/queryphp/www;
index index.html index.htm;
}
~~~
> 說明:以上基本能夠解決大家遇到的問題,請多看幾遍確保是否搞錯,如果沒有效果請百度看看其它解決辦法。
- 關于 QueryPHP
- 獲取 QueryPHP
- 環境要求
- 許可協議 Free
- 執行流程 MVC
- 命名規范 $sName
- 目錄結構 DIR
- 單一入口 index.php
- 響應客戶端請求 URL
- 命名空間與自動載入 Autoload
- 路由
- 路由導入
- 批量導入
- 參數正則
- 分組定義
- 路由綁定
- 路由域名
- 分層控制器
- 默認和初始化APP
- 默認控制器和方法
- url 模式
- url 生成
- url 偽靜態
- url 重寫
- url 重定向
- 控制器綁定
- 方法器分層
- 控制器 __init
- 控制器方法交互
- 模板引擎語法
- C變量輸出 $sName
- C變量支持函數和方法 $sName|trim
- C快捷輸出 ~
- C標簽簡化 Css & Javascript
- C默認值 eq 三元運算符
- C變量運算符 +-
- 變量遞增遞減 ++--
- C循環數據 list
- N變量賦值 assign
- N循環數據 list
- N循環數據高級版 lists
- C循環數據 while
- N循環數據 while
- C循環數據 for
- N循環數據 for
- C條件判斷 if
- N條件判斷 if
- 標簽嵌套無限層級
- N循環流程 break & continue
- N使用 PHP 代碼
- N包含子模板 include
- J模板引擎 intro
- J條件判斷 if
- J循環數據 each
- J變量 & 表達式
- J變量支持函數和方法 hello|test
- J默認值 eq 三元運算符
- J框架前端組件 jquery.queryphp.js
- J前端 CSS 規范
- J前端 JS 規范
- 保護標簽自身 tagself
- 數據庫
- 數據庫配置
- 執行原生 sql 語句
- 數據庫事務
- 數據庫構造器 prefix
- 數據庫構造器 table
- 數據庫構造器 forceIndex
- 數據庫構造器 where
- 數據庫構造器 bind
- 數據庫構造器 join
- 數據庫構造器 union
- 數據庫構造器 orderBy
- 數據庫構造器 groupBy
- 數據庫構造器 having
- 數據庫構造器 distinct
- 數據庫構造器 aggregate
- 數據庫構造器 limit
- 數據庫構造器 forUpdate
- 數據庫構造器 columns
- 數據庫構造器 reset
- 數據庫集合查詢
- 數據庫查詢數據 get
- 數據庫查詢多條數據 getAll
- 數據庫查詢單條數據 getOne
- 數據庫查詢聚合查詢 aggregate
- 數據庫寫入數據 insert
- 數據庫寫入數據 insertAll
- 配置
- 配置格式
- 慣性配置
- 配置文件
- 讀取配置
- 設置配置
- 刪除配置
- 日志
- 日志配置參數
- 日志路徑
- 日志過濾器
- 日志處理器
- 緩存
- 緩存配置參數
- 緩存路徑
- 緩存指定時間
- COOKIE
- COOKIE 配置參數
- 開發調試
- 頁面 trace