🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1182閲覧

apacheの設定 PHPフォームの送信について

rakuten007

総合スコア4

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/11/30 08:40

apacheの環境設定についてご質問です。
バーチャルホストにてWebページを運用していて、PHPのフォームを作成しています。
フォームは入力ページ(contact.php), 確認ページ(confirm.php), 送信完了ページ(thanks.php)の構成です。

入力ページから値を入力し確認ページに送信した際に、console.logで確認した限りは
正常に送信されていることは確認できていますが、送信後ドキュメントルートにリダイレクトされてしまいます。
なお、formタグのaction属性にて"./coform.php"は指定しています。

フォームの構成部分のみドキュメントルートにリダイレクトせずに確認画面へ遷移できればと考えています。
apacheの設定ファイルで設定で追加で必要な設定または修正が必要な個所について、
ご教示頂けないでしょうか。


■バーチャルホストの設定ファイル
vhost.conf
<VirtualHost *:80>
ServerAdmin root@xxxx.xxxxxxx.xxx
ServerName xxxx.xxxxxxx.xxx
DocumentRoot /var/www/html/
RewriteEngine on
RewriteCond %{SERVER_NAME} =xxxx.xxxxxxx.xxx
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URL} [END,NE,R=permanent]
</VirtualHost>

vhost-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot /var/www/html/
ServerName xxxx.xxxxxxx.xxx
SSLCertificateFile /etc/letsencrypt/live/xxxx.xxxxxxx.xxx/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxxx.xxxxxxx.xxx/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/xxxx.xxxxxxx.xxx/chain.pem
</VirtualHost>
</IfModule>

■httpd.conf (抜粋)
Include /etc/httpd/conf.d/vhost.conf
Include /etc/httpd/conf.d/vhost-le-ssl.conf
...
<Location /gsession/>
ProxyPass ajp://localhost:8009/gsession/
ProxyPassReverse https://www.xxxxxxx.xxx/gssesion/
RewriteEngine on
Include /etc/httpd/conf.d/rewrite.conf
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://localhost:8080%{REQUEST_URI} [P]
</Location>

■rewrite.conf
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>


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

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

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

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

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

FKM

2020/11/30 09:30

これ、Apacheだけの問題なのでしょうか。htaccessとかPHP内でheaderとかJavaScriptでリンクとか画面遷移させたりしてませんか?
cerfweb

2020/11/30 13:58

coform.phpですか、confirm.phpですか?
rakuten007

2020/11/30 23:17

>cerfwebさん すみません。confirm.phpです。 >FKMさん htaccessは設定しておらず、Javascriptでの遷移も処理中に記載していません。 先週サーバーの移転作業を行い、apacheの設定ファイルを修正した関係もあり、 ドキュメントルートに遷移している関係もありapacheのファイル設定が関係していると考えました。 また、サーバー移転前は同じソースで普通に遷移できることを確認していました。 情報が不足しており申し訳ありません。
cerfweb

2020/12/01 21:42

formのaction属性にはconform.phpじゃなくてconfirm.phpと正しく記述しているということで間違いないですか。
rakuten007

2020/12/01 23:35

>cerfwebさん 改めて確認しましたが、formのaction属性はconfirm.phpです。 質問に記載したconform.phpのみ記載間違いです。 > FKMさん なお、すでに稼働していることもありタイミングを見てapacheを再起動する必要がありますが、 バーチャルホスト(vhost.conf)に記述誤りを見つけました。 RewriteRuleの記載ですが、{REQUEST_URI}が{REQUEST_URL}になっていました。 また、confirm.phpのソース内を改めて確認したところPHPソースでheader記述でエラーがあった場合は 入力画面(contact.php)に戻る設定としていましたが、エラーがあった場合の処理をコメントアウトした結果正常に確認画面に遷移できました。 前画面ではなくドキュメントルートに移動したかはvhost.conf内の{REQUEST_URI}が原因の可能性もありますので、折を見て確認しようと思います。 お手数をお掛けしました。
guest

回答1

0

自己解決

完全な解決ではありませんが、confirm.php(確認画面)のPHPソースの一部をコメントアウトすることで
正常にcontact.phpからconfirm.phpに遷移すること確認しました。
コメントアウトした箇所ですが、バリデーションチェックでエラーがあった場合に、headerでcontact.phpに遷移するという処理です。
完全な解決に向け関連しそうな箇所をすべて見直し修正することで自己解決を図りたいと思います。
コメントくれた方ありがとうございました。
また、詰まってしまった場合はご相談させていただきます。

投稿2020/12/01 23:41

rakuten007

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問