程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP偽靜態Rewrite設置之APACHE篇,rewriteapache

PHP偽靜態Rewrite設置之APACHE篇,rewriteapache

編輯:關於PHP編程

PHP偽靜態Rewrite設置之APACHE篇,rewriteapache


 一、Apache配置:
 
1、支持httpd.conf 配置
2、支持目錄 .htaccess配置(一種"分布式配置"文件針對虛擬空間,空間商不讓修改Apache配置文件)
 
啟用Rewrite(httpd.conf)
(有時候Options Indexes FollowSymLinks會出問題,只需要配置Options all即可)

LoadModule rewrite_module modules/mod_rewrite.so

 
啟用.htaccess
AllowOverride None    修改為:AllowOverride All
 
二、mod_rewrite 規則:
例如:

RewriteEngine on              ->啟動rewrite引擎
 
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1    ->指訪問test加任意字段.html都能跳轉到test.php    正則匹配的字段存放在虛擬內存匹配$1

 
三、mod_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
 
 
例如:

RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]

 
 
簡單小范例:

RewriteEngine on
RewriteRule ^/in(.*).html$ /index.php


PHP+Apache配置偽靜態的問題

在網站的根目錄創建一個.htaccess這樣的文件
然後你寫上偽靜態的UEL規則
RewriteEngine On
RewriteRule ^(.*)content-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/index\.php\?m=content&c=index&a=show&catid=$2&id=$3&page=$4
RewriteRule ^(.*)show-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/index\.php\?m=content&c=index&a=show&catid=$2&id=$3&page=$4
RewriteRule ^(.*)list-([0-9]+)-([0-9]+).html$ $1/index\.php\?m=content&c=index&a=lists&catid=$2&page=$3

這樣就配置完成了
PS:偽靜態的URL規則可以在網上找的


 

apache 偽靜態 配置

1.檢測Apache是否支持mod_rewrite 通過php提供的phpinfo()函數查看環境配置,通過Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已經開啟的模塊,如果裡面包括“mod_rewrite”,則已經支持,不再需要繼續設置。
如果沒有開啟“mod_rewrite”,則打開目錄 您的apache安裝目錄“/apache/conf/” 下的 httpd.conf 文件,通過Ctrl+F查找到“LoadModule rewrite_module”,將前面的”#”號刪除即可。
如果沒有查找到,則到“LoadModule” 區域,在最後一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必選獨占一行),然後重啟apache服務器即可。

2.讓apache服務器支持.htaccess
修改httpd.conf文件

Options FollowSymLinks
AllowOverride None
改為
Options FollowSymLinks
AllowOverride All

注意:除了要設置上面的地方以後,還得設置一下下面這個(網上很多資料都沒有講到這一塊),否則你將會配制失敗, 把 DocumentRoot 後面的參數改為你本地網站的目錄 例如你網站的根目錄為 D:/web/ 則得設置為 DocumentRoot "D:/web/" 也就是修改當前目錄

此步驟設置好後也得重啟apache服務器才能生效

3.建立.htaccess 文件
新建 htaccess.txt
用記事本 打開,點擊文件–另存為,在文件名窗口輸入”.htaccess”,然後點擊保存。此文件得保存在網站的根目錄

4.填寫網站偽靜態規則 (需要 了解 正則表達式)

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteRule index.html$ index.php
RewriteRule index-([1-9]+[0-9]*).html$ index.php?p=$1

</IfModule>

希望能夠幫到你和網上的其它朋友,曾經我也在上面絞盡腦汁。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved