Apache .htaccess Rewrite homepage only , not 301

在首頁網址不變的前提下,利用 Apache .htaccess 重寫首頁頁面,指定到同站某一網頁內容,而不影響其他網頁運作

使用情境:

首頁需要改版時,但新版本頁面開發/測試時但還不能正式上線,但於準上線狀態,這時可以透過這技巧,避免停機更新,快速切換首頁顯示頁面,不更動網址所以行銷追蹤碼或廣告著陸都不會有問題

[……]

閱讀更多

Win11 XAMPP Carch – Error: MySQL shutdown unexpectedly.

終於還是升級了 Win11,升級完成後慘案還是發生了,該來的還是會來。在我電腦中安裝用來開發用的 XAMPP 中的 MySQL 居然打不開了!!! 還好在 Win10 的時候有遇過一次,也感謝自己有記錄下來,依然有用,解決我 Win11 安裝後 MySQL 崩潰問題,也保住所有資料,本文也帶大家一步一步的做,如您也遇到一樣情況,可以參考本文,希望也能解決您的問題。

升級 Win11後,開啟 XAMPP 出現一堆錯誤的紅字,MySQL 也跟著掛了!!!!

檢視錯誤日誌

由 XAMPP 控制面板開啟 mysql error log (也看不是很懂)

修復錯誤

詳細原因其實也不是很清楚,網路上找到下列這篇文章,似乎是最簡單解決這個問題,本文是依照下列這篇文章進行問題排除,方法與原文有點差異,有興趣可參考原文

參考:xampp mysql and
參考:phpmyadmin dont work

備份資料檔案

如果您的資料已經有資料了,強烈建議備份下來,再來的動作可能會造成原有資料遺失,做危險操作時,花一些時間備份,養成好習慣

資料檔案預設目錄:C:\xampp\mysql\data

複製 backup 目錄中的檔案覆蓋於 data 目錄中

預設 backup 目錄:C:\xampp\mysql\backup

注意!! 若您 資料庫有使用 innodb 在複製 backup 中的檔案時,不可以複製 ibdata1 這個檔案,同時也確保 ibdata1 存在您的 data 目錄中,ibdata1 刪除了,將無法恢復您的資料庫

如果您已誤刪或覆蓋了 ibdata1 這檔案了,還有救

請參考此文章,恢復您的 innodb

參考:recover mysql database from ibdata1

重啟資料庫

覆蓋檔案完成,重啟 MySQL,太好了,沒有報錯,接著開啟 phpMyAdmin 驗證一下是否正常

Youtube 有網友將步驟製成影片,也可以參考這影片

上方步驟完成後,開啟 phpMyAdmin

噴了一些錯誤,但應該是密碼問題,剛覆蓋 backup 的檔案後,如果您的 phpMyAdmin 或其他程式都有設定資料庫登入密碼的話,需要重新設定密碼

MySQL 重設密碼

開啟 XAMPP 面板,按下右側的 Shell 按鈕

輸入下列這段指令更改資料庫 root 密碼

參考:Resetting MySQL Root Password with XAMPP on Localhost

成功開啟 phpMyAdmin

[……]

閱讀更多

XAMPP Win10 Carch – Error: MySQL shutdown unexpectedly.

不知道怎麼回事,今天打開我本機的開發環境的 XAMPP ,無法啟動 MySQL ,因次開始排除錯誤,也將這個過程紀錄,如您也遇到一樣情況,可以參考本文,希望也能解決您的問題

開啟 XAMPP 出現一堆錯誤的紅字

檢視錯誤日誌

由 XAMPP 控制面板開啟 mysql error log, 紅框這一段似乎是錯誤的原因

修復錯誤

詳細原因其實也不是很清楚,網路上找到下列這篇文章,似乎是最簡單解決這個問題,本文是依照下列這篇文章進行問題排除,不過有點不太一樣就是,有興趣可參考原文
xampp mysql and
phpmyadmin dont work

備份資料檔案

如果您的資料已經有資料了,強烈建議備份下來,再來的動作可能會造成原有資料遺失,做危險操作時,花一些時間備份,養成好習慣

資料檔案預設目錄:C:\xampp\mysql\data

複製 backup 目錄檔案覆蓋於 data 目錄

預設 backup 目錄:C:\xampp\mysql\backup

複製 backup 目錄檔案覆蓋於 data 目錄

注意!! 若您 資料庫有使用 innodb 在複製 backup 中的檔案時,不可以複製 ibdata1 這個檔案,同時也確保 ibdata1 存在您的 data 目錄中,ibdata1 刪除了,將無法恢復您的資料庫

如果您已誤刪了 ibdata1 這檔案了,還有救

請參考此文章,恢復您的 innodb

參考:recover mysql database from ibdata1

重啟資料庫

覆蓋檔案完成,重啟 MySQL,太好了,沒有報錯,接著開啟 phpMyAdmin 驗證一下是否正常

開啟 phpMyAdmin

噴了一些錯誤,但應該是密碼問題,剛覆蓋 backup 的檔案後,如果您的 phpMyAdmin 或其他程式都有設定資料庫登入密碼的話,需要重新設定密碼

MySQL 重設密碼

開啟 XAMPP 面板,按下右側的 Shell 按鈕

輸入下列這段指令更改資料庫 root 密碼

參考:Resetting MySQL Root Password with XAMPP on Localhost

成功開啟 phpMyAdmin

[……]

閱讀更多

XAMPP設定Https開發環境,一鍵openssl自簽SSL憑證,配置 Apache Localhost

開發者通常都會在本地端電腦建立一個 localhost 的伺服器來模擬遠端生產環境或測試環境的狀態,進行相關程式碼的開發、測試,而 https 安全網站目前成為主流,為盡可能接近遠端伺服器,勢必本地端伺服器也需要安裝SSL憑證,筆者本地開發環境使用的是 XAMPP,所以本文主要是議介紹 XAMPP 的 https 配置,本文主要是「方便」開發為目地,而非「安全」為目地,介紹如何開發環境中設定SSL憑證,這僅適用於開發環境,切記 ! 不適用於正式生產環境。

本文 XAMPP版本為:XAMPP 7.4.8 ( Windows 64bit )

openssl 自簽憑證

本文使用的 XAMPP 版本已自帶 openssl 所以無需再另外安裝 openssl

準備工作

在 XAMPP 中的 Apache 根目錄中建立一個名為 ssl 子目錄,這目錄用來存放之後產生出來的證書檔案,目錄絕對路徑可能長得像下方這樣

複製 openssl 配置檔範例

openssl 自簽憑證需要一個配置檔,熱心網友 Adrian Suter 在 Github 上已經寫好配置檔範本,我們在剛建立的 ssl目錄中,建立一個名為 cert-template.conf 的檔案,並貼上下方範本網址中的代碼

複製 make-cert.bat 範例

熱心網友 Adrian Suter 在 Github 把 openssl 簽發憑證的流程寫成 Windows bat 檔案,簡化操作流程,克服指令障礙,非常佛心,如果配置檔配置正確,Enter,Enter,Enter一鍵就可以完成指定域的SSL憑證簽發,非常方便,開啟下方連結,並於上述的 ssl 目錄中建立一個名為 make-cert.bat 的檔案,並貼上下方網址中的代碼

執行make-cert.bat

執行 make-cert.bat 前,請確保 cert-template.conf 已同一目錄

執行 make-cert.bat,要求輸入要簽發的網域( 以 example.com 為例 )
輸入 example.com 按 Enter

再來會要求填入一些相關資料,不理它直接Enter、Enter、Enter下去就好,沒有輸入會帶預設值,因為本文介紹只是方便開發用的,不是正式環境使用,所以這些資訊並不必是真實的

當看到請按任意鍵繼續的文字,代表已經完成,下圖就是完成的截圖

此時 ssl 目錄就會多一個 example.com 的子目錄

開啟 example.com 目錄,裡面應該會有 server.crt 及 server.key 這兩個檔案,這就是憑證檔案,如果看到這兩個檔案,恭喜~憑證簽發完成! 這做法非常簡單

Windows 安裝憑證

openssl 自簽憑證沒有信任組織背書,仍會被瀏覽器標示為不安全,需要在 Windows 手動安裝信任此憑證,打開 server.crt 如下圖,按下「安裝憑證」按鈕

會跳出憑證匯入精靈,存放位置選「本機電腦」,下一步

選擇「將所有憑證放入以下存放區」,按憑證存放區的「瀏覽」按鈕

選擇「受信任的根憑證授權單位」,確定

下一步

按「完成」按鈕以完成憑證匯入

看到此彈跳視窗即匯入完成

設定 httpd-vhosts.conf

檔案位置:C:\xampp\apache\conf\extra\httpd-vhosts.conf
設定 XAMPP 的虛擬主機設定

設定 Hosts

檔案位置:C:\Windows\System32\drivers\etc
在檔案最下方加入下方這一行,將網域指向本機,流量就不出站了

完成設定

完成上述動作,再來就是要測試是否可以正常運行,在這之前先完成幾個步驟

  1. Ping 網域是否正確指向 127.0.0.1
  2. 重新啟動 XAMPP
  3. 暫時關閉防毒軟體及防火牆
  4. 清除 Windows DNS快取
  5. 清除瀏覽器 DNS 快取
  6. 瀏覽器關閉後重新開啟

最後打開瀏覽器,開啟所設定的網域,正常網址前方應該是不會出現「不安全」字樣,應該會出現鎖頭圖標,點擊網址前方鎖頭圖標,會顯示「已建立安全連線」的小視窗,如果有看到代表已經設定成功囉

如果沒看到也可以再嘗試一下多清除幾次瀏覽器的快取,或關閉瀏覽器再開啟,我發現瀏覽器這部分似乎有快取,有時設定成功卻仍顯示不安全,所以可以特別去注意這部分,若還是不行就重新操作一遍,或瀏覽文章下方參考連結參考原文

檢視或刪除已信任憑證

當我們完成階段性任務,不需要再使用開發環境某一個域的憑證時,可以參考下面這篇來刪除憑證

Windows 刪除已信任的https憑證、管理憑證

參考資料

https://shellcreeper.com/how-to-create-valid-ssl-in-localhost-for-xampp/
https://a091234765.pixnet.net/blog/post/403840004
https://gist.github.com/turtlepod/3b8d8d0eef29de019951aa9d9dcba546#file-cert-conf
https://www.cnblogs.com/kidsitcn/p/10561979.html
https://odan.github.io/2017/10/29/installing-an-ssl-certificate-under-apache-xampp.html

[……]

閱讀更多

XAMP phpMyAdmin Error Cannot connect: invalid settings.

安裝完 XAMPP 開啟控制面板,啟動 Apache & MySQL 而在 MySQL 的同列有一個 Admin 按鈕,這就是開啟 phpMyAdmin 的方式,這是一件再平常不過的事,但今天在另一台電腦裝完 XAMP 後開啟 phpMyAdmin 後發生資料庫連線錯誤

錯誤訊息

著手解決

依照經驗這是密碼錯誤造成的,如果你是預設安裝路徑,你可以直接用文字編輯器開啟下方這個檔案

這是 phpMyAdmin 的設定檔,在檔案中找到下面這幾行

發現密碼是沒有被設定的,我們在 $cfg['Servers'][$i]['password'] 中鍵入我們要的密碼,並且把 $cfg['Servers'][$i]['AllowNoPassword'] 改為 false,像下方這樣

接著儲存檔案,重啟 MySQL,重新進入 phpMyAdmin,賓果!! 看到登入畫面了,登入成功

參考

http://jsnwork.kiiuo.com/archives/2738/xampp-mysql-phpmyadmin-%E8%A8%AD%E5%AE%9A-root-%E5%AF%86%E7%A2%BC/

[……]

閱讀更多

git .gitignore file ignore .htaccess

就我目前所知,.gitignore 檔案無法忽略 .htaccess 檔,這有點困擾,因為正式環境的.htaccess配置與本地端開發環境的配置通常會有些差異,如果不能忽略這檔案,每次更新我都要改一次
.htaccess 配置,實在很困擾,目前能達到的方法要透過下指令方式取消追蹤( 我也很不會用指令的方式 ),我習慣用 SourceTree 來操作,所以這邊也教一下 SourceTree 的操作步驟。

開啟 SourceTree 命令模式

開啟指定專案,面板的右上角有個命令模式

取消追蹤 .htaccess 檔案命令

重新追蹤 .htaccess 檔案

Reference:

https://stackoverflow.com/a/22784639/6784662

[……]

閱讀更多

Fix Google reCaptcha invalid-json error

使用 Google reCaptcha 驗證碼進行後端驗證,拋出 invalid-json 錯誤,分享解決這問題的方法:

解決方法:

開啟檢查 PHP.ini 設定,搜尋「allow_url_fopen」,若值不是 On 請改成 On 開啟它,如下:

allow_url_fopen = On

接著搜尋「extension=php_openssl.dll」,確認是否開啟,前方有分號「;」代表沒開啟

;extension=php_openssl.dll

將前方的分號「;」移除,如下:

extension=php_openssl.dll

重新啟動 SERVER

 [……]

閱讀更多

Warning: file_get_contents(): Unable to find the wrapper “https” …

解決錯誤訊息:

Warning: file_get_contents(): Unable to find the wrapper “https” – did you forget to enable it when you configured PHP?

解決方法:

需要開啟 php php_openssl 的這個 extension
開啟 php.ini,搜尋:「extension=php_openssl.dll」

;extension=php_openssl.dll

將前方的分號「;」移除

extension=php_openssl.dll

重新啟動 SERVER[……]

閱讀更多

PHP php.ini 在哪裡?

開發PHP時,難免要修改PHP.ini,問題來了,PHP.ini在哪裡,我們可以透過一個簡單的方式找到 PHP.ini 的檔案路徑

建立一個PHP檔案,裡面就寫一行 phpinfo(),運行這個檔案,它會列出所有PHP相關資訊

<?php
phpinfo();

PHP.ini 就在下方紅框處,這是Windows上的PHP,Linux上的PHP一樣可以這麼用[……]

閱讀更多