WordPress パーマリンクの設定時のApache設定変更方法

WordPressのパーマリンクの設定方法についてですが、レンタル(VPS)サーバーの設定状況によっては、サーバー側で設定変更する必要があります。
 
※この記事は、レンタル(VPS)サーバーのOSがCentOS6、WebサーバーがApacheの場合について説明しています。

WordPressの管理画面でパーマリンクの設定変更


 
WordPressの設定画面は、左メニューの「設定」→「パーマリンクの設定」です。
 
デフォルトは、「共通設定」の「デフォルト」になっています。
 
下記のなかから、適切な設定を選択します。
・日付と投稿名
・月と投稿名
・数字ベース
・投稿名
・カスタム構造
例)カテゴリ名と投稿タイトルの場合:/%category%/%postname%/
 
選択したら、「変更を保存」をクリックします。
 
下記コメントが表示された場合は、このパーマリンクの設定に必要な.htaccessというファイルを作成する権限がありません。
 
“.htaccess が書き込み可能ならこの操作は自動的に行われますが、そうでない場合は.htaccess ファイルに mod_rewrite ルールを書き込む必要があります。以下のフィールドをクリックし、CTRL + a ですべてのコードを選択してください。”
 

.htaccessファイルの権限設定


 
(2013年10月3日)ファイル権限については、現在は別の設定にしました。
下記を参照願います。
WordPressディレクトリのパーミッションをセキュアに
 
このような権限の問題が発生しているのは、WordPressの管理画面から.htaccessのファイル作成、変更を行うサーバー上のユーザーが”apache”ユーザーであるのに対し、WordPress用のディレクトリ、ファイルの所有者が一般のユーザーになっているためと思われます。
 
WordPressの管理画面から設定できるようにするための方法としては、
1).htaccessのファイルの所有者を”apache”ユーザーにする、
2).htaccessのファイルをすべてのユーザーが変更できるようにする、
などの方法があります。
 
1)の場合は、WordPress管理画面から設定変更できるようになりますが、サーバー上で手動で変更する場合は、一般ユーザーでは行えなくなり、rootユーザーなどにスイッチする必要があります。
 
2)の場合は、すべてのユーザーが変更できるようになるためセキュリティ上望ましくないといった問題があります。
 
1).htaccessの所有者をapacheユーザーにする
 
実行例)WordPressディレクトリが/var/www/html/test-wpの場合

# cd /var/www/html/test-wp
# touch .htaccess         ←空の.htaccessファイル作成
# chown apache.apache .htaccess  ←所有者、所有グループをapacheに変更
# ls -al .htaccess
-rw-r--r-- 1 apache apache 0 Feb 16 13:04 .htaccess

 
2).htaccessの書き込み権限をその他のユーザーにも与える
 

# cd /var/www/html/test-wp
# touch .htaccess         ←空の.htaccessファイル作成
# chmod 666 .htaccess       ←その他ユーザーに書込権限付与
# ls -al .htaccess
-rw-rw-rw- 1 test-wp test-wp 0 Feb 16 13:04 .htaccess

上記権限設定を実施後、WordPress管理画面から設定を行うと自動でサーバー上の.htaccessファイルに設定が反映されるはずです。
 
パーマリンク設定変更後、ブラウザからページにアクセスし、正常に表示されるか確認します。
 
“エラー:このリンクは無効です”
のようなエラーが表示された場合は、Apacheの設定ファイルで.htaccessファイル内の設定による変更が許可されていない可能性があります。
 

.htaccessの設定変更を許可する


 
Apacheの本体の設定ファイルはhttpd.confというファイルですが、Webページが置かれているディレクトリに、このディレクトリ固有の設定を別のファイルに分けて(.htaccess)設定できます。
これを出来るようにするには本体側の設定ファイル(httpd.conf)で許可する必要があります。
 
WordPress用のディレクトリ設定の場所で下記のように修整します。
AllowOverride None
 ↓
AllowOverride FileInfo
  
実行例)WordPress用ディレクトリが/var/www/html/wordpressの場合
# vi /etc/httpd/conf/httpd.conf
 
変更前
<Directory “/var/www/html/wordpress”>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
 
変更後
<Directory “/var/www/html/wordpress”>
Options FollowSymLinks
AllowOverride FileInfo
Order allow,deny
Allow from all
 
設定変更後、Apacheを再起動します。

関連記事の目次
VPSサーバーでスナップショットを取得
~障害に備え、リカバリーポイントを作成。
VPSサーバーにログインして、設定内容を確認
~グローバルIPアドレス確認、SSHキーを作成。
VPSサーバーにSSHでログイン
~Tera Term、SSH、公開鍵認証方式
yumコマンドで最新のパッケージにアップデート
~全パッケージを最新にアップデート
Apacheのインストール
~yumコマンドでApacheインストール、iptablesでファイアウォールの設定
PHPとMySQLをインストール
~yumコマンドでPHP、MySQLインストール
WinSCPを使ってWordPressをアップロード
~WinSCPをクライアントPCにインストール、ファイルアップロード方法
WordPressをインストール
~MySQLでWordPress用データベース作成、wp-config.phpファイルの設定
CentOSのファイアウォール設定
~iptablesを使ってネットワークフィルタリング設定を一から行う
OpenSSHの設定をよりセキュアに
~ログイン制限、ポート変更、認証方式
ApacheでTCPのTraceメソッドを無効にする
~Apacheの設定変更、Telnetで動作確認
ヘッダーにApacheバージョンが表示されないようにする
~Apacheの設定変更、Telnetで動作確認
Apacheでディレクトリ内一覧表示を無効にする
~autoindex_moduleのロードを無効にする
セキュリティを考慮し、MySQLの匿名ユーザーにパスワードを設定、または削除
~MySQLの匿名ユーザーにパスワードを設定、または削除
PHPのバージョンが表示されないようにする
~php.iniの設定変更
WordPressディレクトリのパーミッションをセキュアに
~WordPress用ディレクトリの所有グループ、ユーザー、パーミッション設定
パーマリンク設定時のApache設定
~WordPressパーマリンクの設定、Apache .htaccessの設定
WordPressテーマの選定
~テーマ追加の特徴フィルターの項目、テンプレートキング
WordPressで画像のアップロード、サイズ調整、リンクを設定
~アップロード画像の画像サイズ、サムネイル、画像編集、リンク設定
更新可能なRPMパッケージのリストをメールで送信する
~yumコマンド、Bashスクリプト、Cron
Linuxでディスク使用量が多いディレクトリを調べる方法(1)
~du --max-depth
Linuxでディスク使用量が多いディレクトリを調べる方法(2)
~duコマンド、sortコマンド
WordPressデータベースのバックアップとリストア
~コマンドラインでバックアップ、リストア
WordPressのバージョンアップと旧バージョンへの戻し
~データベースとディレクトリのバックアップ、リストア
BashスクリプトでWordPressデータベースを自動バックアップ
~MySQLデータベースをBash、Cronを使って自動バックアップ、メール通知
BashスクリプトでDos攻撃など大量アクセスのログを検知
~Apacheアクセスログ、Dos、Cron、メール通知
テーマ作成
 
ブートストラップ3を使って自作テーマ作成
~Bootstrap3、自作テーマ作成、TwentyFourteen
Bootstrapのフリーのテーマを使ってデザインを簡単にカスタマイズ
~Bootstrap3のスタイルをカスタマイズ
 
WordPresssショートコード
 
簡単なショートコードを作ってみる
~ショートコードの作り方
ショートコードを使って関連記事のリンクを自動で挿入
~ショートコードの簡単なサンプル
ショートコードを使ってディレクトリ内のファイル名を取得し、投稿内にリンクを挿入
~カスタムフィールド利用、PHPで日本語文字列検索などのコーディング
 
AJAX、AngularJSなどその他応用
 
WordPress投稿内でAngularJSを使用
~AngularJS、Bootstrap、アコーディオン
Bootstrap3で作成したナビゲーションメニューをAngularJSに変更
~AngularJS、Bootstrap、自作テーマheder.php
WordPressでAngularJSを使ったGoogleマップを使えるようにする
~AngularJSを使って投稿内にGoogleマップ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です