web-dev-qa-db-ja.com

Mac OSX Server 5上のWordPressパーマリンク(El Capitan)

OSX Server(El Capitan)を実行しているMac Miniサーバー上で複数のサイトを実行しています。私は1つのサイトでWordPressを実行していますが、パーマリンクを正しく機能させることができませんでした。

私はこの記事の指示に従った: https://wordpress.org/support/topic/getting-htaccess-working-for-permalinks-on-mac-osx-server?replies=3

  • 自分のWebルートフォルダを/ Library/Server/Web/Data/Sitesに設定します。
  • 私は私のウェブサイトのディレクトリ(/ Library/Server/Web/Data/Sites/website)に.htaccessを作成しました。
  • 私は私のhttpd.confファイルでmod_rewriteを有効にし、AllowOverride設定をAllに設定しました。
  • Httpd.confファイルが書き込み可能であることを確認しました。
  • パーマリンクを(/%postname%/の形式に)変更してsaveを押すと、「パーマリンク構造が更新されました」というメッセージが表示されます。
  • 私が新しいページを保存するとき、それは正しいパーマリンク構造を与えるように見えます(sample-page /)
  • ページを開こうとすると、404エラーが発生します。

以下の提案に基づいて、私は自分のサーバーログを見ました。ログはこの出力を与えました:

[Sat Aug 13 09:15:28.081255 2016] [autoindex:error] [pid 7076] [client 17.151.38.202:49836] AH01276: Cannot serve directory /Library/Server/Web/Data/Sites/www.ecumene.com/: No matching DirectoryIndex (index.html,index.php,default.html) found, and server-generated directory index forbidden by Options directive
[Sat Aug 13 09:16:44.879836 2016] [mpm_prefork:notice] [pid 6994] AH00169: caught SIGTERM, shutting down
[Sat Aug 13 09:16:49.596197 2016] [mpm_prefork:notice] [pid 7117] AH00163: Apache/2.4.18 (Unix) LibreSSL/2.2.7 mod_wsgi/3.4 Python/2.7.10 PHP/5.5.36 configured -- resuming normal operations
[Sat Aug 13 09:16:49.596277 2016] [core:notice] [pid 7117] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/Apache2/httpd_server_app.conf -E /var/log/Apache2/error_log'
[Sat Aug 13 09:16:50.291312 2016] [mpm_prefork:notice] [pid 7117] AH00169: caught SIGTERM, shutting down
[Sat Aug 13 09:16:55.105614 2016] [ssl:warn] [pid 7157] AH01916: Init: (www.ecumene.com:443) You configured HTTP(80) on the standard HTTPS(443) port!
[Sat Aug 13 09:16:55.181103 2016] [ssl:warn] [pid 7157] AH01916: Init: (www.ecumene.com:443) You configured HTTP(80) on the standard HTTPS(443) port!
[Sat Aug 13 09:16:55.242694 2016] [mpm_prefork:notice] [pid 7157] AH00163: Apache/2.4.18 (Unix) LibreSSL/2.2.7 mod_wsgi/3.4 Python/2.7.10 PHP/5.5.36 configured -- resuming normal operations
[Sat Aug 13 09:16:55.242740 2016] [core:notice] [pid 7157] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/Apache2/httpd_server_app.conf -E /var/log/Apache2/error_log -D WEBSERVICE_ON'
postdrop: warning: unable to look up public/pickup: No such file or directory

これはプラグインのないWordPressのフレッシュインストールです。これを正しく機能させるにはどうすればよいですか。私は今しばらくこれに苦労しています。

ありがとうございました。

2
mattbowlby

私はいくつかのことをチェックしたい

Apache2ログ

  • 端末を開く
  • tail -f /var/log/Apache2/error_logでエラーログを確認してください
  • アクセスログをtail -f /var/log/Apache2/access_logで確認する

ワードプレス

  • 基本設定で.htaccess に正しい規則 があることを確認してください。
  • リダイレクトが発生したときにさらにエラーを記録できるかどうかを確認するために、wpデバッグを有効にします。

これはWP loggingを有効にする方法です

  • wp-config.phpの前に/* That's all, stop editing! Happy blogging. */を3行追加します。

これはwp-contentフォルダにdebug.logファイルを作成します。

define('WP_DEBUG', true);
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

あなたの404エラーが出ている間それからあなたのURLにアクセスし、あなたのログで情報がないか調べてみてください。

これらのことをチェックして、何か変なことがあれば報告してください。あなたの設定は私には問題ないようです。しかし、あなたは他に何かが足りないかもしれません。そのため、設定を間違えた場合、ログをチェックするとより多くの情報が得られるはずです。

編集

あなたの問題はDirectoryIndexディレクティブにあると思います

Cannot serve directory /Library/Server/Web/Data/Sites/www.ecumene.com/: No matching DirectoryIndex (index.html,index.php,default.html) found, and server-generated directory index forbidden by Options directive

Wordpressは、パーマリンクをクエリ変数に変換するために、舞台裏でindex.phpファイルを使用しています。しかし現在あなたのWebサーバーはindex.phpファイルを読むように設定されていないので(おそらくindex.htmlファイルしか許可しないでしょう)、このファイルをDirectoryIndexディレクティブに追加する必要があります。

あなたのhttpd.confを探します(おそらく/private/etc/Apache2/httpd.confにあります)

それから

  • Sudo nano /private/etc/Apache2/httpd.conf
  • ファイル(ctrl + w)でDirectoryIndexを検索してください。

そしてこのブロックにindex.phpを追加します

<IfModule dir_module>
  DirectoryIndex index.php index.html
</IfModule>
  • ctrl + xを使用してnanoを終了し、変更したファイルを保存するためにyを入力します。
  • 設定をテストするSudo apachectl -t
  • Apacheを再起動します。Sudo apachectl restart

これはApacheにあなたのサイトディレクトリで最初にindex.phpファイルを探すように伝えます、もし見つからなければindex.htmlファイルを試します。

これで問題は解決します。

2
bynicolas