WordPress 轉址與中文網址在 IIS 上會遇到的問題

以下包含暫時解法,因為是直接動WordPress Kernel

1. WordPress 網址無法轉址(Permalinks)

要修改 web.config 檔

 <?xml version="1.0" encoding="UTF-8"?>

<configuration>

 <system.webServer>

 <rewrite>

 <rules>

 <rule name="wordpress" 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>

</configuration>

2. WordPress 中文網址無法正常轉址

修改 wp-includes/ 底下的 class-wp.php

$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';

改成

$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? mb_convert_encoding( $_SERVER['PATH_INFO'], 'UTF-8', 'Big5') : '';

然後

list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );

改成

list( $req_uri ) = explode( '?', mb_convert_encoding( $_SERVER['REQUEST_URI'], 'UTF-8', 'Big5' )  );

3. WordPress 中文檔案上傳錯誤
修改 wp-admin/includes/ 底下的 file.php

$filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );

改成

$fileTypeNameArr = explode( '.', $filename );
$countNum = count( $fileTypeNameArr ) - 1;
$fileExt = $fileTypeNameArr[$countNum];
$filename = time() . '-' . rand( 0,999999999 ) . '.' . $fileExt;

—-參考文獻—-
[1] Using Permalinks – https://codex.wordpress.org/Using_Permalinks
[2] [WordPress]中文網址,發生404錯誤,教你如何解決? – http://dev.brucelulu.com/topics/180
[3] How to Setup WordPress Permalinks – https://gist.github.com/jonahvsweb/5479580
[4] IIS permalinks compatibility – web.config not working? – http://stackoverflow.com/questions/27988710/iis-permalinks-compatibility-web-config-not-working
[5] 解決 WordPress 在 IIS 中無法使用固定網址的問題 – http://www.minitw.com/archives/server/solved-can-not-be-used-in-iis-wordpress-permalink-issue.htm?variant=zh-tw
[6] WordPress小技巧(1):解決中文檔名圖片無法上傳問題 – http://www.cc.net.tw/2013/07/434/

[Windows] 批次檔 倒數計時 + PPPoE撥號

為了要在開機時自動撥號PPPoE取得IP位置,我想到用批次檔做連線的動作再放到啟動裡去,但是啟動速度太快,有時候怕硬體還沒初始化,所以就順便做了倒數計時,利用ping自己的方法當作延遲就可以達到到類似倒數計時的效果,把以下內容放到notepad裡存成.bat檔即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
echo 倒數五秒連線至網路
echo.
echo 5
ping -n 2 127.0.0.1&gt;nul
echo 4
ping -n 2 127.0.0.1&gt;nul
echo 3
ping -n 2 127.0.0.1&gt;nul
echo 2
ping -n 2 127.0.0.1&gt;nul
echo 1
ping -n 2 127.0.0.1&gt;nul

rasdial &lt;連線名稱&gt; &lt;帳號&gt; &lt;密碼&gt;

其中連線名稱必須跟當初設定的PPPoE檔名相符,不是帳號喔!

Windows 8 離線安裝 .NET Framework 3.5 方法

相信大家在Windows 8之後的版本,一定常常遇到有程式執行需要.NET Framework 3.5才能打開的情況,通常Windows會自動跳出線上安裝的畫面,但是小弟常常遇到安裝失敗的情況,感覺是網路問題,好不容易安裝成功又因為工作需要重灌電腦,.NET Framework 3.5又離我而去了,實在有夠難安裝。

上網Google了一下,微軟原廠有離線安裝的解決方法,就是掛載Windows 8的iso檔,或是插入光碟,然後用最高權限鍵入以下指令:

(以E:為掛載位置範例)

Dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:E:sourcessxs /LimitAccess

接著就等DISM跑囉!

擷取

痾…這個…0x800f081f是…

再度搜尋一下,發現是Windows的更新跟他有衝突,要手動解除安裝以下更新代碼:

KB2966826
KB2966827
KB2966828

我的Windows 8版本是Professional,目前只有看到系統更新了KB2966827而已,解除安裝之後再進行一次上面的DISM指令,然後就成功拉~

擷取2

(我絕對不會說是為了要用Friendly.Flickr才需要.NET Framework 3.5的…XD)

 

Windows 8 完全關閉使用者帳戶控制(UAC)

8b8a0-e693b7e58f96
▲煩人的使用者帳戶控制(UAC)通知,其實影響著你的使用者權限

自從Windows Vista以後,我們想要在普通的Windows帳號擁有較高權限時,通常會去控制台的“使用者帳戶”(之類的)裡面去找 “變更使用者帳戶控制設定” 改成不要通知。原本在Windows 7 版本以前,這樣子修改就可以獲得較高的權限,方便安裝及修改部分系統檔(例如 C:WindowsSystem32Driversetchosts)或是有時候安裝軟體、遊戲時老是安裝有問題

51a4b-e693b7e58f962

Windows Vista 及 7 的使用者,只要去 控制台->使用者帳戶和家庭安全->使用者帳戶 中的”變更使用者帳戶控制設定”,就可以獲得較高的權限,也不會有煩人的通知,但是在Windows 8 系統,除了去控制台取消 使用者帳戶控制設定 選項的通知以外,還要去登錄編輯器裡面改值才能完全取消這個控制。

首先,執行 regedit
5b950-e693b7e58f963

然後依序找到以下位置:

HKEY_LOCAL_MACHINE
/SOFTWARE
/Microsoft
/Windows
/CurrentVersion
/Policies
/System

f849d-e693b7e58f964

其中 ” Enable ULA ” 項目改成 0 即可。

9a08f-e693b7e58f965

———————–
至於為什麼這麼執著要關掉UAC…因為在安裝Visual Studio 2012的時候總是遇到奇怪的錯誤,一直Google他的錯誤代碼,照著MSDN的Solution修改,像是另外下載SSDT來裝就可以解決某個代號的錯誤。但解決了這一個,又多出很多新的問題,感覺也不像檔案本身的問題(從Dream Spark那邊抓下來的學生版Visual Studio 2012,也驗過MD5)。直到有一天,我在搬移、取代零碎檔案的時候發現,都已經在控制台關了UAC,怎麼還一直問我權限,然後就從登錄檔下手,什麼問題都解決了,Visual Studio 2012 Update 3也順利更新完畢。

Dos底下驅動光碟機

以下是一般Config.sys的內容
DEVICE=C:DOSHIMEM.SYS /TESTMEM:OFF
DEVICE=C:DOSEMM386.EXE NOEMS
BUFFERS=20,0
FILES=40
DOS=UMB
FCBS=4,0
DOS=HIGH
LASTDRIVE=Z
DEVICEHIGH=C:TEAC.SYS /D:MSCD001 (註:TEAC.SYS是TEAC光碟機驅動程式,MSCD001是光碟機代號)
SHELL=C:DOSCOMMAND.COM C: /E /P

以下是一般Autoexec.bat的內容
LH C:DOSMSCDEX.EXE /D:MSCD001 /M:16(註:MSCDEX.EXE是DOS內附的,MSCD001是光碟機代號,必須與Config.sys內的相同)
C:DOSSMARTDRV.EXE /X
@ECHO OFF
PROMPT $p$g
PATH C:DOS;
SET TEMP=C:TEMP

如果是A:開機注意修改目錄.

如何製作USB開機碟

這次要來介紹如何製作USB開機碟

為什麼要這麼做呢?
大多數是為了要在DOS環境下刷BIOS韌體
可是現在電腦不是幾乎都會在官網附上Windows環境下刷韌體的程式嗎?
喔~可能有的時候你會發現有點小問題…

小弟前一個月想重灌OS時
手癢順便載了新版的BIOS然後刷下去
重灌完才發現…電腦實在是很不穩
如果要打電話給客服也不知道該怎麼解釋這種情況
(我遇到很多次問題都是無法解釋的…哀)

來記錄一下小弟刷過的BIOS

首先是自己的電腦 :

ASUS K42Jv
BIOS版本 : 從 210 -> 212
情況 : 電腦不穩定,會發生抖動跟遲鈍

然後是別人的電腦 :

MSI PR200 Ya Edition
BIOS版本 : 從1221_150 -> 1221_151
情況 : 無線網路模組會故障,無法驅動

這兩台電腦都是經過Windows環境刷BIOS的
然後一旦刷了新版的BIOS,就回不去舊版的了
所以今天才要來介紹如何用USB開機,以便在DOS環境下刷BIOS

首先
下載此軟體
https://www.dropbox.com/s/b5x8lz18nm8bpy9/HPUSBFW.zip?dl=0
這好像是HP提供的

解壓縮之後,點選”HPUSBFW.EXE”

插上你平常沒在用的USB,打開之後勾選”快速格式”及”建立一個DOS開機作業磁碟”
打了兩個勾勾然後按那個 “…”按鈕
選擇開機檔來源資料夾
就在解壓縮的資料夾裡
然後就可以開始了!
如果你的USB是新買的
可能會跟小弟遇到同一種情況
就是他會說你的USB有寫入保護,無法格式化
此時只要先在Windows環境下(就是在你的USB按右鍵格式化那種)先格式化過就可以了
格式化完之後
再把你下載的BIOS跟DOS架構的韌體寫入程式放進USB
在去BIOS調整為USB開機
就可以刷回舊版的BIOS囉!
好像有個專業術語
這種行為叫做”降刷”