WordPress 解決 Directory Browsing 問題

一般安裝好 WordPress 網站之後,如果你有目錄底下是沒有 index.php 這個檔案的,別人如果輸入該目錄網址,會將該目錄下的檔案看的一清二楚,這本身會有安全性問題。

做法就是在wordpress 的 .htaccess 裡面加入下面這行:

#disable Directory Browsing
Options -Indexes

除了上面這個指令之外,你還可以加入以下指令,這樣會更安全。

        
<IfModule mod_headers.c>

# X-Content-Type nosniff
Header set X-Content-Type-Options nosniff
#避免 XSS (cross-site scripting) 攻擊
Header set X-XSS-Protection "1; mode=block"
</IfModule>

參考:
How To Disable Directory Browsing In WordPress

WordPress 關閉預設 RSS,自創 Feed URL

現在很多網路爬蟲都會自己抓 WordPress 預設的 RSS 路徑,然後將你的內容抄襲到內容農場網站上,相當令人討厭。

你可以安裝下面這個外掛:

Disable Feeds

安裝好並啟用之後,就會將 WordPress 預設RSS給關閉。

然後再安裝「WP RSS Aggregator」這個外掛,自己創建一條新的 RSS Feed,這樣就不會被自動抓取內容了。

WP RSS Aggregator – News Feeds, Autoblogging, Youtube Video Feeds and More

 

WordPress rss 如何加上 media:content 標籤(Mailchimp image 需要)

如果你的 WordPress 有使用 Mailchimp 來發送電子報,Mailchimp 的文章圖片標籤是:*|RSSITEM:IMAGE|*。但是這個標籤會去抓取你的 wordpress 的 rss feed 的 「media:content 」這個標籤。但是Wordpress 預設是沒有 media:content 這個標籤的,所以你要自己加上去。

在function.php 加上以下:

// RSS-Feed for Mailchimp
function dn_add_rss_image() {
    global $post;

    $output = '';
    if ( has_post_thumbnail( $post->ID ) ) {
        $thumbnail_ID = get_post_thumbnail_id( $post->ID );
		$thumbnail = wp_get_attachment_image_src( $thumbnail_ID, 'large' );

        $output .= '';
    }
    echo $output;
}
add_action( 'rss2_item', 'dn_add_rss_image' );
//end: RSS-Feed for Mailchimp

加上去之後,打開你的網址:https://example.com/rss,你就會發現目前已經加上了 media:content 這個標籤了。

所以你在用 Mailchimp 發送電子報的時候,就可以使用 *|RSSITEM:IMAGE|* 這個代碼來顯示圖片。

參考:
Adding the Mailchimp Required < media: content > Tag to your WordPress RSS Feed Output
在Mailchimp中設計WordPress RSS源-您應該記住這一點

AWS EC2 增加檔案系統的儲存空間大小,解決硬碟空間不夠問題

在修改之前,要先登入AWS 修改原本檔案系統大小。參考下面文章。

Request modifications to your EBS volumes

在後台修改完大小之後,登入你的EC2 輸入以下指令。

df -hT
#驗證每個磁碟區使用的檔案系統,請使用 df -hT 命令。

 lsblk
#檢查磁碟區是否有必須擴展的分割區,請使用 lsblk 命令來顯示連接到執行個體之區塊型儲存設備的相關資訊。


sudo growpart /dev/xvda 1
對於具有分割區的磁碟區 (例如上一個步驟中顯示的磁碟區),請使用 growpart 命令來擴展分割區。請注意,裝置名稱與分割區號碼之間有一個空格。


sudo resize2fs /dev/xvda1
[ext4 磁碟區] 若要擴展每個磁碟區上的檔案系統,請使用 resize2fs 命令。

注意,先看過官方文件再輸入指令。
調整磁碟區大小後擴展 Linux 檔案系統

參考文章:
[AWS] EC2 硬碟空間不夠,手動增加方法

解決Ubuntu inodes 過大導致空間不足問題:No space left on device

如果你輸入df -i 這個指令,檢查inodes空間,發現滿了的話,那就是伺服器上某些目錄的檔案數太多了(df -l是檢查硬碟空間,df -i檢查inodes空間)。

這種問題不是因為伺服器硬碟空間不足,而是inodes滿了,通常問題就是伺服器上有太多檔案,可能是垃圾檔案,這時你可以輸入以下指令,檢查是哪些檔案過大。

#檢查某個目錄下的檔案數
for i in /目錄/*; do echo $i; find $i |wc -l; done

檢查/varlib/php/ 目錄下的檔案數
for i in /var/lib/php/*; do echo $i; find $i |wc -l; done

通常php可能會php sessions太多導致inodes空間滿了的問題,可以參考以下文章:

解決因php sessions導致inodes過大的問題

另外,如果wordpress檔案有安裝wordfence這個外掛,wflogs也可能產生很多檔案。

Apache:設定Strict Transport Security 的header

步驟如下:

1.開啟 apache headers
sudo a2enmod headers

2.
設定 /etc/apache2/conf-available/security.conf ,加上 header 設定

語法基本如下:
Strict-Transport-Security: max-age=
Strict-Transport-Security: max-age=; includeSubDomains
Strict-Transport-Security: max-age=; preload

可直接複製下面貼到security.conf:

Header always set Strict-Transport-Security "max-age=31536000;includeSubdomains; preload"

3.重開apache
sudo service apache2 reload

參考文章:
[apache] apache 設定 HSTS ( HTTP Strict Transport Security )

Strict-Transport-Security