
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 轉址之後,再點連結網址自動會縮成較短的網址文章,也可以正確的顯示喔。

謝謝你瀏覽我的文章,希望對你有所幫助,若你有其他問題,可留言詢問我,我會再找時間回覆你的,謝謝。
重點整理
- 移除 index.php 是為了提高 SEO 排名
- 安裝 IIS URL Rewrite
- 調整 web.config
相關學習文章
Comment…