徽萬科技有限公司
服務(wù)項(xiàng)目產(chǎn)品
  • 抖音運(yùn)營服務(wù)
  • SEO 優(yōu)化服務(wù)
  • 愛采購
  • 網(wǎng)站搭建
  • 微信小程序開發(fā)
  • 企業(yè)官網(wǎng)開發(fā)
  • 商城網(wǎng)站開發(fā)
  • 微傳單設(shè)計(jì)
  • 教育系統(tǒng)開發(fā)
  • 云設(shè)計(jì)
400-088-8563
新聞詳情

企業(yè)官網(wǎng)301重定向的編寫及更改

22
發(fā)表時(shí)間:2021-03-03 18:22作者:蕪湖網(wǎng)絡(luò)推廣

實(shí)現(xiàn)重定向有許多可能的方法,在Apache網(wǎng)絡(luò)服務(wù)器上(通常作為操作系統(tǒng)呈現(xiàn)在運(yùn)行UNIXLinux的機(jī)器中),我們能夠在一個(gè)名為.htacess的標(biāo)準(zhǔn)文件中使用RedirectRedirectMatch指令輕松地進(jìn)行重定向。另外,你還可以使用一些稱為rewire rules的高級指令,使用稱為mod_rewriteApache組件進(jìn)行重定向,我們稍后將對此進(jìn)行講解。

在運(yùn)行Microsoft IIS的網(wǎng)絡(luò)服務(wù)器中,提供了多種執(zhí)行重定向的方法。正如我們在“IIS Redirects-301302”中所描述的那樣,最基本的方法是使用IIS控制臺。具有IIS服務(wù)器的用戶還可以使用一個(gè)帶有指令的文本文件,假設(shè)他們使用ISAPI插件,如ISAPI_Rewrite,這一腳本語言具有與Apache mod_rewrite組件相類似的功能。

許多程序員會(huì)使用其他的技巧執(zhí)行重定向,如直接在程序語言中運(yùn)行,如PerlPHP、ASPJavaScript。如果以這種形式運(yùn)行重定向,那么程序員必須確保網(wǎng)絡(luò)服務(wù)器返回的HTTP狀態(tài)碼是301。你可以使用Firefox插件Live HTTP HeadersChrome擴(kuò)展或基于網(wǎng)絡(luò)的服務(wù)器標(biāo)題檢測工具檢查返回的標(biāo)題。

另外一種執(zhí)行重定向的方法是在頁面層面通過使用元refresh標(biāo)簽執(zhí)行的,該標(biāo)簽看起來像下面這樣:在content部分的第一個(gè)參數(shù)5表示網(wǎng)絡(luò)服務(wù)器在將用戶重定向至指定頁面前需等待的時(shí)間,發(fā)布者可能會(huì)使用這一方法展示頁面,讓用戶知道他們將被重定向至一個(gè)與其目標(biāo)頁面不同的頁面。

但問題是,大部分元新標(biāo)簽都會(huì)被看作302重定向,唯一的例外情況是你將重定向延遲設(shè)置為0秒。你需要放棄能夠告知用戶你在進(jìn)行重定向的幫助頁面,但搜索引擎可能會(huì)把它看作301重定向(為安全起見,最好的做法是盡量使用301重定向)。

網(wǎng)址重寫和重定向的mod_rewriteISAPI_Rewrite

對于該話題,有大量的內(nèi)容可寫,本書僅呈現(xiàn)一部分。下面的描述僅是一個(gè)簡單的描述,旨在幫助一些包括網(wǎng)絡(luò)設(shè)計(jì)者和網(wǎng)站管理者在內(nèi)的專業(yè)人員了解重寫和重定向是如何運(yùn)行的。要跳過這一技術(shù)性話題,如何在無循環(huán)的情況下重定向主頁索引文件。

Apachemod_rewriteMicrosoft IIS服務(wù)器的ISAPI_Rewrite均為網(wǎng)址重寫提供了很好的途徑,使用這些工具的原因如下:

你已經(jīng)改變了網(wǎng)站中的網(wǎng)址結(jié)構(gòu),所以內(nèi)容也從一個(gè)位置移動(dòng)到了另一個(gè)位置,當(dāng)你出于某些原因而改變CMS或網(wǎng)站體制時(shí),便會(huì)出現(xiàn)這種情況。

你想將一些不適應(yīng)搜索引擎的網(wǎng)址替換為搜索引擎友好型網(wǎng)址。

如果你將Apache作為自己的網(wǎng)絡(luò)服務(wù)器,那么你會(huì)在.htaccess文件或Apache配置文件中放置一個(gè)稱為rewrite rules的指令(如sites_conf目錄中的httpd.conf或站點(diǎn)特定的配置文件)。同樣地,如果你使用的是IIS服務(wù)器,那么你會(huì)使用一個(gè)ISAPI插件,如ISAPI_Rewrite,而將規(guī)則放在httpd.ini配置文件中。

需要注意的是,ISAPI_Rewritemod_rewrite的規(guī)則可能有所不同,而下面的討論主要圍繞mod_rewrite展開,你的.htaccess文件可能這樣開頭:

如果你要將rewrite添加到服務(wù)器配置文件中,則需要?jiǎng)h除第二行,因?yàn)橹挥?/span>.htaccess支持RewriteBase。我們在這里使用的是RewriteBase,這樣你便不需要在所有規(guī)則的開頭都輸入^/,而只要輸入^即可(我們稍后會(huì)介紹正則表達(dá)式)。

完成這一步之后,重寫規(guī)則便會(huì)被運(yùn)行,或許你要求在不改變用戶瀏覽器位置欄的網(wǎng)址和不重新編碼get_product.php腳本的情況下,http://www.yourdomain.com/products/123格式下的產(chǎn)品頁面網(wǎng)址能夠顯示http://www.yourdomain.com/get_product.php?id=123中的內(nèi)容。當(dāng)然,這不能取代所有出現(xiàn)在網(wǎng)站頁面鏈接中的動(dòng)態(tài)網(wǎng)址,那屬于另一個(gè)話題范圍了。你可以使用一個(gè)簡單的重寫規(guī)則實(shí)現(xiàn)第一部分的要求,類似于:

這個(gè)例子告訴網(wǎng)絡(luò)服務(wù)器所有進(jìn)入/product/目錄的搜索請求都應(yīng)被映射到/get_product.php請求,同時(shí)使用/product/的子文件夾作為PHP腳本的參數(shù)。

^符號表示域名網(wǎng)址的開頭,$符號表示網(wǎng)址的結(jié)尾,[0-9]表示數(shù)位,而緊隨其后的+符號表示數(shù)位的一次或多次出現(xiàn)。同樣地,/后面的?表示斜杠符號出現(xiàn)0次或1次,()符號會(huì)記住所有括號內(nèi)的內(nèi)容,之后,你可以使用$1訪問緩存中的內(nèi)容(如,第一組括號內(nèi)的全部內(nèi)容)。不足為奇的是,如果規(guī)則中包含第二組括號,那么你可以使用$2訪問第二組括號的所有內(nèi)容,依次類推。[L]標(biāo)志保存在服務(wù)器進(jìn)程中,指示重寫引擎一旦匹配該規(guī)則便停止運(yùn)行,否則,所有剩下的規(guī)則就會(huì)被運(yùn)行。

下面是一個(gè)稍微復(fù)雜點(diǎn)的例子,http://www.yourdo-main.com/webapp/wcs/stores/servlet/ProductDisplay?storeId=10001&catalogId=10001&langId=-1&categoryID=4&productID=123格式的網(wǎng)址將被重寫為http://www.yourdomain.com/4/123.htm

[^/]表示除了斜線之外的任一符號,這是因?yàn)?/span>^在方括號內(nèi)被理解為不。[QSA]標(biāo)志是表示你不希望搜索請求字符串被緩存(就像你不希望追蹤參數(shù)被保存一樣)。

要撰寫優(yōu)質(zhì)的重寫規(guī)則,你需要變成一個(gè)模式匹配大師(這是描述正則表達(dá)式功能的另一種方式),下面列舉一些最重要的特殊符號及重寫引擎對這些符號的解讀。

*:當(dāng)前字符匹配0次或n次。

+:當(dāng)前字符匹配1次或n次。

?:當(dāng)前字符出現(xiàn)0次或1次。

^:字符串的開始。

$:字符串的結(jié)尾。

.:任意符號(如作為通配符)。

\避開后面的字符,如\.表示點(diǎn)不是一個(gè)通配符而是一個(gè)實(shí)際的字符。

^:在[]括號內(nèi)表示非,例如,[^/]表示非斜杠。

在正則表達(dá)式中,輕易便會(huì)犯下錯(cuò)誤,一些常見的、導(dǎo)致無意子字符串匹配的錯(cuò)誤包括如下:

·在應(yīng)該使用.+的地方使用了.*(因?yàn)?/span>.*什么都不匹配)。

·沒有使用反斜杠換碼一個(gè)你不想表達(dá)的特殊符號,因?yàn)楫?dāng)你指定.代替\.時(shí),你確實(shí)指的是點(diǎn)這個(gè)符號而不是任意字符(因此,default.htm會(huì)匹配defaultthtm,而default\.htm會(huì)只匹配default.htm)。

·在開頭或結(jié)尾通過隱含方式確定的前提下,省略^$(因此,default\.htm會(huì)匹配mydefault.html,而^default\.htm$只匹配default.htm)。

·使用貪婪表達(dá)式,匹配所有出現(xiàn)的次數(shù)而不是在第一次出現(xiàn)之后停止。

·詮釋貪婪最簡單的方式是給出一個(gè)例子:

該表達(dá)式將重定向所有從http://www.yourdomain.com/blah/index.htmlhttp://www.yourdomain.com/blah/的請求,這可能并不是其本意,但為什么會(huì)出現(xiàn)這種情況?因?yàn)?/span>.*會(huì)在/?看到斜線符號之前將其采集,謝天謝地,我們有一個(gè)簡單的解決方案。使用[^.*?代替.*來進(jìn)行匹配,例如,使用^.*?)/?代替^.*)/?,或使用[^/]+/[^/]代替./.*。

因此,要改正上述規(guī)則,你可以使用以下表達(dá)式:

為什么不用下面這個(gè)呢?它比較有限,因?yàn)樗荒芷ヅ浒粋€(gè)目錄的網(wǎng)址,而包含多個(gè)子目錄的網(wǎng)址則不能匹配,如http://www.yourdomain.com/store/cheese/swiss/wheel/index.html。

你可能也想過,測試或調(diào)試應(yīng)是網(wǎng)址重寫中比較重要的部分,當(dāng)你進(jìn)行調(diào)試時(shí),RewriteLogRewriteLogLevel指令便是你最好的伙伴!將RewriteLogLevel設(shè)置為4或以上值,然后查看重寫引擎在詮釋你的規(guī)則時(shí)會(huì)做什么。

順便說一下,在后面幾個(gè)例子中的[R=301]標(biāo)志——你可能也猜到了——是告訴重寫引擎進(jìn)行301重定向而不是標(biāo)準(zhǔn)的重寫。

還有另外一個(gè)與RewriteRule連用的指令,稱為RewriteCond。你可能會(huì)使用RewriteCond匹配搜索請求字符串中的內(nèi)容、域名或其他未出現(xiàn)在域名和網(wǎng)址問號之間的元素(這正是RewriteCond所關(guān)注的內(nèi)容)。

需要注意的是,RewriteRuleRewriteCond都不能訪問網(wǎng)址錨節(jié)點(diǎn)中的內(nèi)容——即#后面的內(nèi)容,因?yàn)樵摬糠謨?nèi)容本質(zhì)上是被瀏覽器所用的,是不會(huì)被作為請求的一部分發(fā)送到服務(wù)器的。下面的RewriteCond案例是在其允許執(zhí)行重寫規(guī)則之前,尋找一個(gè)正面匹配的主機(jī)名:

注意正則表達(dá)式開頭的感嘆號,重寫引擎把它理解為非。

對于除了http://www.yourdomain.com之外的任何一個(gè)主機(jī)名來說,301重定向相當(dāng)于www子域名中的標(biāo)準(zhǔn)網(wǎng)址。[NC]標(biāo)志使重寫條件區(qū)分大小寫。你可能會(huì)問,保存搜索請求字符串的[QSA]標(biāo)志去哪兒了?重定向不需要它,它是隱含的。

如果你不希望搜索請求字符串留存在含有重定向的重寫規(guī)則中,那么可以在規(guī)則中的目標(biāo)網(wǎng)址末端添加一個(gè)問號,類似于:

為什么不用^yourdomain\.com$?想一下:該表達(dá)式不匹配typo域名,如yourdoamin.com,DNS服務(wù)器和虛擬主機(jī)將被設(shè)置為響應(yīng)typo域名(假設(shè)錯(cuò)誤拼寫是一個(gè)你注冊和擁有的域名)。

在什么情況下,你會(huì)希望從重定向的網(wǎng)址中省略搜索請求字符串,如我們在上面兩個(gè)例子中那樣呢?當(dāng)會(huì)話ID或追蹤參數(shù)(如source=banner_ad1)需要被放棄時(shí)。沒有必要在重定向之后保留追蹤參數(shù)(因?yàn)榘创a的原始網(wǎng)址在被訪問之后,會(huì)被記錄到訪問日志文件中),而且從規(guī)范化角度來看,你也沒必要那樣做。如果你希望從重定向的網(wǎng)址中刪除追蹤參數(shù),但同時(shí)又想保留搜索請求字符串中的其他參數(shù),你應(yīng)該怎么做呢?下面是針對靜態(tài)網(wǎng)址的做法:

而對于動(dòng)態(tài)網(wǎng)址:在重定向用戶之前,需要用cookie做一些奇妙的事情嗎?調(diào)用一個(gè)跟蹤用戶的腳本,然后301重定向該用戶至標(biāo)準(zhǔn)網(wǎng)址:

注意上述代碼中沒有[R=301]標(biāo)志,這是故意的,因?yàn)闆]有必要將該腳本展示給用戶,該腳本完成它的使命之后,使用重寫,讓它自己發(fā)送301重定向。

其他值得用重寫規(guī)則和[R=301]標(biāo)志修改的標(biāo)準(zhǔn)化問題包括:搜索引擎索引HTTPS網(wǎng)址下的在線目錄頁面時(shí)及網(wǎng)址漏掉一個(gè)本應(yīng)有的尾斜杠時(shí)。首先,HTTPS解決方案是:

需要注意的是,如果你的安全服務(wù)器與主服務(wù)器分離,那么你可以跳過RewriteCond行。

現(xiàn)在添加尾斜杠:

完成網(wǎng)址重寫工作,將動(dòng)態(tài)網(wǎng)址替換成靜態(tài)網(wǎng)址之后,你可能想逐步淘汰動(dòng)態(tài)網(wǎng)址,你可能會(huì)替代網(wǎng)站中所有出現(xiàn)的遺留網(wǎng)址,也可能會(huì)使用301重定向遺留的動(dòng)態(tài)網(wǎng)址至其靜態(tài)對應(yīng)頁面。這樣一來,所有指向廢棄網(wǎng)址的導(dǎo)入鏈接便不會(huì)再引導(dǎo)搜索爬蟲和人類用戶進(jìn)入正確的新網(wǎng)址——因此,確保新的網(wǎng)址是被索引、引用、鏈接和標(biāo)記的,而將原有網(wǎng)址從索引中刪除。通常來講,下面是你的做法:

不過,如果你不小心,便可能會(huì)陷入無限循環(huán)重定向的怪圈,避免該局面的一個(gè)應(yīng)急方案是在重寫的目標(biāo)網(wǎng)址中添加一個(gè)無意義的參數(shù),而且要確保這個(gè)無意義的參數(shù)不會(huì)在你進(jìn)行重定向之前出現(xiàn),具體是:需要注意的是,該案例使用了兩個(gè)堆在一起的RedirectCond行,在同一區(qū)塊中列出的所有重定向條件都是“ANDed”(并列)一起的,如果你希望條件是“Ored”,那么你需要使用[OR]標(biāo)志。


分享到:
安徽萬澤科技有限公司
產(chǎn)品服務(wù)
解決方案
精選套餐
服務(wù)支持
產(chǎn)品概述
常見問題
合作加盟
渠道分銷
基礎(chǔ)設(shè)施
產(chǎn)品配置
聯(lián)系我們
入門指南
日韩亚洲欧美理论片| 国产乱色国产精品播放视频| 乱中年女人伦av三区| 亚洲男人成人性天堂网站| 亚洲 欧洲 日韩 综合AV| 久久综合给合久久97色| 八戒八戒在线观看免费| 一区二区三区鲁丝不卡| 国产亚洲精品aa片在线观看网站| 久久精品99无色码中文字幕| 一区二区三区日本久久九 | 国产精品白浆一区二区三区| 天天综合网亚洲网站| 无码人妻精品一区二区三区9厂| 欧美乱大交xxxxx潮喷l头像| 一本大道东京热无码一区| 亚洲欧洲日韩久久狠狠爱| 99国产精品自在自在久久| 她也色tayese在线视频| 国产三级黄色的在线观看 | 精品麻豆国产色欲色欲色欲WWW | 成人国产永久福利看片| 亚洲aⅴ无码成人网站国产app | 国产三级不卡在线视频| 精品国产yw在线观看| 亚洲欧美一区二区三区蜜芽| 亚洲夂夂婷婷色拍ww47| 高清无码18| 亚洲区福利视频免费看| 国产精品.xx视频.xxtv| 少妇愉情理伦片丰满丰满午夜| 女人扒开腿让男桶喷水高潮的软件 | 欧美午夜成人片在线观看| 国产一级做美女做受视频| 粗大挺进朋友人妻淑娟| 亚洲成在人线AⅤ中文字幕| 高清无码爆乳潮喷在线观看| 国产人妻精品无码av在线| 在线观看无码一区二区台湾| 91精品国产91热久久久久福利| 国产极品尤物久久精品|