質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

1358閲覧

.htaccessを使わずにhttpd.confで運用

oeao09

総合スコア4

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2021/09/16 18:22

編集2021/09/17 10:28

前提・実現したいこと

WordPressで.htaccessを使わずにアパッチの主設定ファイルhttpd.confで運用にしたいと思っています。
そのためにhttpd.confのAllowOverrideディレクティブの値をNoneにし、ドキュメントルートから.htaccessを消しました。しかし何かの拍子に.htaccessが復活してしまいます。復活するタイミングはWordPressのダッシュボードからパーマリンクを設定した後だけでなく気づくと復活している感じです。これは設定ファイルhttpd.confが効いていないという事でしょうか?.htaccessを使わない方法を知りたいです。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

httpd.conf

1ServerRoot "/etc/httpd" 2Listen 80 3Include conf.modules.d/*.conf 4User apache 5Group apache 6ServerAdmin root@localhost 7<Directory /> 8 AllowOverride none 9 Require all denied 10</Directory> 11DocumentRoot "/var/www/html" 12<Directory "/var/www"> 13 AllowOverride None 14 # Allow open access: 15 Require all granted 16</Directory> 17<Directory "/var/www/html"> 18 Options Indexes FollowSymLinks 19 AllowOverride None 20 Require all granted 21 RewriteEngine On 22 RewriteRule ^index.php$ - [L] 23 RewriteCond %{REQUEST_FILENAME} !-f 24 RewriteCond %{REQUEST_FILENAME} !-d 25 RewriteRule . /index.php [L] 26</Directory> 27<IfModule dir_module> 28 DirectoryIndex index.html 29</IfModule> 30<Files ".ht*"> 31 Require all denied 32</Files> 33ErrorLog "logs/error_log" 34LogLevel warn 35<IfModule log_config_module> 36 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 37 LogFormat "%h %l %u %t \"%r\" %>s %b" common 38 <IfModule logio_module> 39 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 40 </IfModule> 41 CustomLog "logs/access_log" combined 42</IfModule> 43<IfModule alias_module> 44 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 45</IfModule> 46<Directory "/var/www/cgi-bin"> 47 AllowOverride None 48 Options None 49 Require all granted 50</Directory> 51<IfModule mime_module> 52 TypesConfig /etc/mime.types 53 AddType application/x-compress .Z 54 AddType application/x-gzip .gz .tgz 55 AddType text/html .shtml 56 AddOutputFilter INCLUDES .shtml 57</IfModule> 58AddDefaultCharset UTF-8 59<IfModule mime_magic_module> 60 MIMEMagicFile conf/magic 61</IfModule> 62EnableSendfile on 63<IfModule mod_http2.c> 64 Protocols h2 h2c http/1.1 65</IfModule> 66IncludeOptional conf.d/*.conf
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

サーバー環境 AWS EC2
Apache/2.4.48

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

AllowOverride Noneになっていれば.htaccessは無視されます。
パーマリンク保存時に.htaccessが再作成されるのはWordPressの動作がその様になっているからです。

functions.php に次のコードを記述することで .htaccess の書き込みを止めることが可能です。
ただ、このコードはWordPress内の「mod_rewriteモジュールが有効かどうか」判定に干渉するので思わぬ問題が出る可能性もあります。

add_filter('got_rewrite', '__return_false');

他の方法としては.htaccessに書き込み出来ないようパーミッションを変更することです。

投稿2021/09/17 07:05

編集2021/09/17 19:00
Eggpan

総合スコア3205

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oeao09

2021/09/17 10:37

ご回答ありがとうございまいます。すみませんhttpd.confの設定ですが古いほうをアップしてしまいました。リライトルールを追記して新しい設定ファイルを再アップしました。 RewriteEngine On RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] こちらを追記してあります。 書き方は間違ってないでしょうか? それでリライトルールを追記しても質問と同じような現象でした。 AllowOverride Noneは.htaccessの設定を無視するだけなのでhttpd.confの設定はちゃんと効いている訳ですね。パーマリンク保存時に.htaccessが再作成されるのはワードプレスの使用なのですね。 ただパーマリンク設定をしなくても気づくと.htaccessが勝手に作成されています。これを作られないようにする事は可能でしょうか?
Eggpan

2021/09/17 10:57 編集

Rewriteの部分は良いと思いますが、 Options Indexes FollowSymLinks はまずくないでしょうか?各ディレクトリにアクセスするとファイル一覧が表示できてしまいます。 .htaccessの自動作成を止める方法は調べてみないとわかりません。 ソースコードを追いかけて、書き込み判定の部分でフィルターフックがあるかどうかを調べ、あればfunctions.phpなどに適切な記述を追記するようなやり方になると思います。
oeao09

2021/09/17 17:43

ありがとうございます。 なるほどOptions -Indexes FollowSymLinksとして一覧表示されないようにします。 さっき.htaccess消したのですが、今見るとまた生成されています。 ちょっと気持ち悪い挙動ですが精神衛生上良くないのであまり気にしない事にします。
oeao09

2021/09/18 00:32

ありがとうございます。 .htaccessが生成されるディレクトリhtmlのパーミッションは755です。 このパーミッション設定が良いという情報があったのでこれは変えたくないです。 .htaccessを消してfunctions.phpに教えていただいたコードを記述しました。 これでしばらく運用してみたいと思います。 結果お知らせします。
oeao09

2021/09/26 23:09

教えていただいたコードで問題なく運用できています。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問