综合久久久久亚洲综合|久久久久久久久免费一级黄色片|丰满中年熟妇露脸视频|精品无码一区二区三区性色|国产精品美女久久久久久不卡

18
Apache和Nginx設置偽靜態(tài)(URL Rewrite)的方法

我就用這個網(wǎng)站為例子介紹下具體的配置,在Apache中有兩種方法配置,一是通過httpd.conf文件,二是通過.htaccess文件,策略語句的原理是使用正則表達式來匹配訪問路徑,并按照規(guī)則替換成指定的路徑:
 

使用httpd.conf來配置rewrite策略:

要使用httpd.conf文件來設置偽靜態(tài)策略,我們可以直接在httpd.conf中寫入如下代碼,如果您的網(wǎng)站是配置在VirtualHost中,則將這段代碼加到對應的<VirtualHost hostname><VirtualHost>
標簽內(nèi):
<IfModule mod_rewrite.c>
#輸入: list-123-456.html 
#輸出: list.php?page=123&id=456 
RewriteEngine on
RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$1&id=$2
</IfModule>
添加完成后重啟httpd服務后即可生效

使用.htaccess來配置rewrite策略

檢查httpd.conf中的<Directory />標簽配置,確認AllowOverride配置為All,這樣才能啟用.htaccess文件:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
檢查httpd.conf中的AccessFileName參數(shù),確認為.htaccess
AccessFileName .htaccess
在網(wǎng)站根目錄下建立.htaccess文件,寫入如下內(nèi)容:

  1. RewriteEngine on 
  2. RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3

復制代碼保存后重啟httpd服務即可生效

常見問題:
Q:為何都按上面設置了缺還是無法靜態(tài)化?
A:很有可能是因為別的目錄設置項覆蓋了<Directory />標簽內(nèi)的選項,導致.htaccess文件沒起作用。這個問題一般出現(xiàn)在網(wǎng)站根目錄的Directory標簽中,在這個例子中,可以檢查<Directroy"/var/www/html">標簽內(nèi)的AllowOverride參數(shù)是否設置為All。

Q:.htaccess文件放在網(wǎng)站根目錄,那子目錄也可以實現(xiàn)偽靜態(tài)嗎?
A:.htaccess默認對所在目錄下所有子目錄生效,但是如果子目錄中也放置了.htaccess文件,則該子目錄下的訪問規(guī)則以子目錄中的.htaccess文件為準。


Nginx:

      Nginx下設置偽靜態(tài)方法與Apache差不多,直接在nginx.conf (或者在對應的*.conf) 中找到需設置偽靜態(tài)規(guī)則的服務器對應字段,在server{ location/{ } }中添加以下代碼:

server {
    listen 80 default_server;
    server_name _;
    location / {
         root /usr/share/nginx/html;
         index index.html index.htm;
         rewrite ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3;
         }
}
添加后重啟Nginx服務即可生效!


正則表達式匹配

      就用上面的例子中的偽靜態(tài)策略來簡單解釋下正則表達式在配置的作用:

策略:RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3
請求路徑:http://www.abc.com/list-123-456.html 

本策略分成兩段,第一段是使用正則表達式去匹配請求訪問的路徑,第二段是將匹配后的參數(shù)轉化為真實訪問的路徑。策略執(zhí)行時:^(.*)list-([0-9]+)-([0-9]+)\.html$ 與 /list-123-456.html 這個字符串進行匹配:

  • ^和$字符分別代表了匹配輸入字符串的開始和結束
  • ()中的匹配到的內(nèi)容會被按順序分配到變量$1 $2 $3中
  • .*匹配任意字符串,且長度從0個到多個,故$1值為/
  • [0-9]+匹配字符0-9,長度1個到多個,故$2和$3分別是123和456


所以最后真實訪問的動態(tài)地址為 /list.php?page=123&id=456


上面只是介紹了基本的配置策略,其實這個rewrite規(guī)則還有非常多的玩法,例如使用RewriteCond進行域名層面的重寫跳轉,接下來可以找些資料慢慢補充。
http://bbs.qcloud.com/thread-3545-1-1.html

這條幫助是否解決了您的問題? 已解決 未解決

提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好! 很抱歉未能解決您的疑問。我們已收到您的反饋意見,同時會及時作出反饋處理!