Apache配置rewrite

    最近將代碼作了遷移,更換了web服務器,從原來的Nginx,換成使用Apache,多少有些區別。這裏整理一下在apache下實現rewrite功能。php

 

第一部分:修改apache配置文件支持rewritehtml

一、apache加載rewrite模塊linux

LoadModule rewrite_module modules/mod_rewrite.so

 

二、支持Options FollowSymLinks web

   在以前配置將本來的Options FollowSymLinks修改成Options None是爲了不列出apache的目錄。apache

    <Directory "/data1/wap/htdocs/stat">
        Options FollowSymLinks #Options None    
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

      在配置實現rewrite中,若是不使用Options FollowSymLinks,在查看錯誤日誌,會發現報以下錯誤
    Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden瀏覽器

 

三、配置rewrite服務器

    a、在linux文件目錄下生成.htaccess文件配置rewrite, 以下    app

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^/(.*) $1.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /index.php


    b、修改apache配置文件,配置rewrite規則

ide

四、調試rewrite配置的辦法spa

    在配置文件增長以下配置,便可查看rewrite日誌 

RewriteLog "/data1/rewrite.log"
RewriteLogLevel 9

 

修改apache的配置文件須要重啓一下web服務,重啓後,若是採用.htaccess文件修改規則的方式。在修改.htaccess文件無需重啓web服務

第二部分: rewrite配置規則總結

 一、Apache Rewrite規則修正符

1) R 強制外部重定向
2) F 禁用URL,返回403HTTP狀態碼。
3) G 強制URL爲GONE,返回410HTTP狀態碼。
4) P 強制使用代理轉發。
5) L 代表當前規則是最後一條規則,中止分析之後規則的重寫。
6) N 從新從第一條規則開始運行重寫過程。
7) C 與下一條規則關聯

若是規則匹配則正常處理,如下修正符無效
8) T=MIME-type(force MIME type) 強制MIME類型
9) NS 只用於不是內部子請求
10) NC 不區分大小寫
11) QSA 追加請求字符串
12) NE 不在輸出轉義特殊字符 \%3d$1 等價於 =$1

二、RewriteCond標誌符

作判斷使用,例如 RewriteCond %{REQUEST_FILENAME} -f 判斷文件是否存在

三、RewriteRule標誌符

執行跳轉的準則

四、環境變量

環境變量名稱

示例

HTTP_USER_AGENT

 

HTTP_REFERER

 

HTTP_COOKIE

 

HTTP_FORWARDED

 

HTTP_HOST

 

HTTP_PROXY_CONNECTION

 

HTTP_ACCEPT

 

DOCUMENT_ROOT

 

SERVER_ADMIN

 

SERVER_NAME

 

SERVER_ADDR

 

SERVER_PORT

 

SERVER_PROTOCOL

HTTP/1.1

SERVER_SOFTWARE

Apache/2.2.11 (Win32) PHP/5.2.9-1

 

 

REMOTE_ADDR

正在瀏覽當前頁面用戶的 IP 地址

REMOTE_HOST

正在瀏覽當前頁面用戶的主機名。反向域名解析基於該用戶的 REMOTE_ADDR

REMOTE_PORT

用戶鏈接到服務器時所使用的端口

REMOTE_USER

 

REMOTE_IDENT

 

REQUEST_METHOD

 

SCRIPT_FILENAME

/webRoot/t/share77.html

PATH_INFO

 

QUERY_STRING

 

AUTH_TYPE

 

 

 

TIME_YEAR

 

TIME_MON

 

TIME_DAY

服務器獲取當前的日值

TIME_HOUR

 

TIME_SEC

服務器獲取當前時間的秒

TIME_MIN

 

TIME

服務器獲取當前的時間, 格式爲: 年月日時分秒

 

 

API_VERSION

apache API 版本信息

REQUEST_URI

瀏覽器請求的資源信息.

REQUEST_FILENAME

被請求的資源的在磁盤的物理地址

IS_SUBREQ

若是是 sub-request 則顯示爲 true, 不然爲 false.

相關文章
相關標籤/搜索