スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

Nginx+Wordpressで固定ページをTOPにしたら403になった件

CentOS上のLEMP環境でWordpressを練習がてら動かしててドハマったはなし。
CentOS6.6 Nginx 1.6.2 MySQL 5.1.3 PHP5.3.3
Wordpressは/var/www/wordpress
Nginxのrootは/var/wwwで/var/www以下にはDrupal baserCMS concrete5などが動いていたりする。
Wordpressは4.1.1。

現象1.パーマネントリンク設定したら404頻発
現象2.固定ページをTOPに設定したらTOPだけ403

ちょっと作業が前後してるのでどっちがどっちの原因かよくわからないけどとりあえず解決したのでメモ。

1.パーマネントリンクの変更にはrewrite有効設定が必要
パーマネントリンクの設定をカスタムにしたら404頻発になった方の解決法。
Nginxでのエラー情報ってまだちょっと少ない感じですかね?(俺の検索力なのか)
Apacheだと.htaccessの書き換えとかが必要になったり自動でやってくれてたりするみたいですけど、Nginxには.htaccessはないので設定ファイルに書かなきゃいけません。なまじ今までphp-fpmの設定だけで動くには動いちゃってたもんだから。。。
Nginx+WordPress パーマリンク設定をすると404NotFoundに飛ばされる
Nginx: nginxでWordPressのパーマリンク設定をカスタム構造に変更する
Nginx+PHP-FPMでWordPressを動かすときの設定(パーマリンク・アクセスログ対策)
はい。Nginxの設定です。

$ sudo emacs /etc/nginx/sites-enabled/〜〜.conf



try_files $uri $uri/ /wordpress/index.php?q=$uri&$args;
のとこでファイルがない場合にTOPに戻るんですけど、うちの構成の場合Nginxのrootは/var/wwwになってるので、明示的に/wordpress/index.phpとすることで通ります。WordpressのディレクトリをNginxのrootにしてる場合はここは/index/phpでいいと思います。

2.TOPが403になるのはNginxでパスを明示してやればよい
404はファイルが見つかりません、403は閲覧権限がありません、ですね。

$ sudo cat /var/log/nginx/error.log

[error] 14019#0: *10 directory index of "/var/www/wordpress/" is forbidden, client: 192.168.0.6, server: localhost, request: "GET /wordpress/ HTTP/1.1", host: "192.168.0.2", referrer: "http://192.168.0.2/wordpress/wp-admin/edit.php?post_type=page"


だらーっとforbiddenが並んで出てきます。
この時の状態はTOP(http://サーバーIP/wordpress/)がForbiddenなんですけど、それ以外のページはちゃんと表示されてます。試しにプラグイン全停止、固定ページ削除、固定ページをTOPのチェック外すなどしてみましたが改善せず。どころかパーマネントリンク設定をいじると他のページまで403になっちゃったりします。(index.php 〜〜みたいなURLを書き換えてる?から当然?)
というわけでいろいろ調べてみましたが、Apacheの.htaccessとか権限の問題っぽいのばかり引っかかってしまう。
半ばやけになってNginxの設定ファイルを書き換えたらうまく行きました。

location /wordpress {
   root /var/www/wordpress;
index index.php index.html index.htm;


多分wordpress/index.phpを見失ってるんだろうということで/wordpressのリクエストの時はrootを/var/www/wordpressとしとけ、ってことですね。
しかしこれだとTOPは表示されたのですが、CSSもimgも読み込めていません。
Screenshot from 2015-02-20 16:40:15 ガタガタですね。
これはchromiumのdeveloper toolsとかで読みこめば分かるのですが、wordpress/wp-includes/とかwordpress/wp-content/へのパスが違っていて、取ってこれなくてCSSもimgも404Not Foundになっている状態です。
ならば、/wordpress/へのアクセスにaliasをかけてやれば解決しそうです

location /wordpress {
alias /var/www/wordpress;



これ、上記の  root /var/www/wordpress;と同時に書いていると今度はNginxがreloadないしrestartするときにエラーを吐きます。

nginx: [emerg] "root" directive is duplicate, "alias" directive was specified earlier in /etc/nginx/sites-enabled/php.conf:32
nginx: [emerg] "alias" directive is duplicate, "root" directive was specified earlier in /etc/nginx/sites-enabled/php.conf:32


rootディレクティブが重複、aliasは仕様上おかしいよ(下は順序入れ替えた時でエラーも入れ替わっただけです)
というわけでroot指定を削ってaliasを書いてみます。
エラー無しで起動、http://サーバーIP/wordpressにアクセスすると・・・
Screenshot from 2015-02-20 16:44:45 どうやらうまく行きましたね。

WordPress を専用ディレクトリに配置する
少し参考になりました。
結局Nginxの設定ファイルはこんな感じ。(concrete5、baserCMS用の部分は削ってあります)
パスが違ったりしてそのままじゃ動かないかもだけど、そのへんは適当に書き換えてやればだいたい動くんじゃないかな?


関連記事
CentOS 6.5でnginx+php-fpmでPHPを動かしてみる
Cent OS 6.5でNginx+php-fpm+mysqlでFC2オープンソース版とWordPress
Concrete5.7.0が正式にリリースされたので早速CentOSサーバーに入れて動かしてみたよ
CentOS6.6のLEMP環境のconcrete5とWordPressのちゅーにんぐ(MySQL編)
CentOS+LEMPでbaserCMS
関連記事
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

コメントの投稿

管理者にだけ表示を許可する
ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。