iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
DevOps

自架 Windows Server,打造你的專業 WordPress 部落格系列 第 10

IIS WordPress 永久連結如何移除 index.php 路徑

WordPress 文章的永久連結有分幾種模式,預設是「?p=123」這種方式

實際上的連結就變成這樣

為了讓 URL 更好辨識內容也增加 SEO 的排名優化通常會設定為「/index.php/%postname%//」

可是這樣的 URL 就變成

網址中間多了一個 index.php 也不是非常的簡潔,希望可以移除中間的 index.php

讓文章正常顯示這樣該怎麼做呢?
我的 WordPress 環境是安裝在 IIS 之上,該怎麼調整呢?

調整永久連結設定

在永久連結的設定就有一個類似的設定,將「/index.php/%postname%/」改為「/%postname%/」

這樣調整之後,文章的連結就會拿掉中間的 index.php 部份,我們點文章的網址確實已經變了。
可是就出現了 404 找不到網頁了。

這種網址找不到文章的錯誤,可以利用轉址的功能來解決,將原本的 /%postname%/ 路徑自動轉成 /index.php/%postname%/ 就可以正確顯示了。

IIS 環境解決方法

安裝 URL Rewrite

在 IIS 上轉址的方法,可以安裝 URL Rewrite 套件來解決,在微軟官方下載網址是 http://www.iis.net/downloads/microsoft/url-rewrite

下載之後執行檔案安裝

安裝好了之後,在 IIS 的站台就會出現新的功能 URL Rewrite

調整 web.config

在 IIS 底下的網站都會有一個 web.config 的檔案,這檔案可以調整 IIS 的設定,

我們安裝好 URL Rewrite 之後,就可以在 web.config 增加一組設定

<rewrite>
<rules>
	<rule name="Main Rule" stopProcessing="true">
		<match url=".*" />
		<conditions logicalGrouping="MatchAll">
			<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
			<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
		</conditions>
		<action type="Rewrite" url="index.php" />
	</rule>
</rules>
</rewrite>

新設定的位置就放在 <system.webServer> </system.webServer> 之間就可以了

這組設定可以讓原本的 /%postname%/ 路徑自動轉成 /index.php/%postname%/ 文章就可以正確顯示。
調整完 web.config 之後,再回來 IIS 的 URL Rewrite 看也會有相對應的設定

測試網址

執行剛剛原本會錯誤的網頁就變正常了。

已發表很多舊文章是否適用呢?

通常改永久連結的問題,如果你有很多舊文章是不是要一篇一篇的改呢?
有些已經被 google 收錄的連結是不是會失效?
你們放心,這次的修改並不需要大費周章的調整以前的文章連結,而是會自動轉址,
例如有一篇文章在 google 的連結是這樣的

網址中包含了 index.php 路徑,可是經過設定 URL Rewrite 轉址之後,再點連結網址自動會縮成較短的網址文章,也可以正確的顯示喔。

重點整理

  1. 移除 index.php 是為了提高 SEO 排名
  2. 安裝 IIS URL Rewrite
  3. 調整 web.config

相關學習文章

Google Search Console 安裝教學 讓新文章馬上列入搜尋名單
WordPress 強制使用 https 連線 (使用 SSL 憑證)
WordPress 修改主題樣式 (style.css) - 常用 4 招教學


上一篇
WordPress 修改主題樣式 (style.css) - 常用 4 招教學
下一篇
WordPress 強制使用 https 連線 (使用 SSL 憑證)
系列文
自架 Windows Server,打造你的專業 WordPress 部落格30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言