0

これが私のhtaccessです

Options -Indexes
<IfModule dir_module>
DirectoryIndex in.php
</IfModule>
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule \.(css|jpe?g|gif|png|js|css|htm|html|mp3|wav|ico)$ - [L]
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]


RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php http://www.example.com/$1 [R=301,L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^some/(.*)/(.*)/$ test.php?z=$1&n=$2 [NC,L]
RewriteRule ^some/(.*)/(.*)$ test.php?z=$1&n=$2 [NC,L]
RewriteRule ^some/(.*)/$ test.php?z=$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !.*test.php$ [NC]
RewriteRule ^([^\.]+)$ $1.php [NC,L]

mod_rewriteを実装した後、相対パスを持つ$_POSTは機能しません。

注:上記のように、<base href ="http://example.com/"/>とRewriteBase/をすでに設定しています。

私はSOで他の質問をしましたが、運がありません!

アドバイスありがとうございます!

申し訳ありませんが..ある意味では機能していません。おそらくhtaccessリダイレクト中にPOST変数が失われています???

4

1 に答える 1

1

フォーム アクションの作成に使用しているコードを検証します。リダイレクトが原因で POST 変数が失われているという上記のコメンターに同意します。

なぜこれが起こっているのでしょうか?

まず、www 以外から www にリダイレクトする書き換えルールは、誰かが初めて www なしで Web サイトにアクセスしたときにのみ発生する必要があります。それに応じてプログラムする必要があります。

つまり、誰かが「example.com」と入力すると、書き換えると「www.example.com」に移動します。

それ以降、フォームで完全なドメインを参照する必要がある場合は、完全な WWW バージョンを使用してください。

<form action="http://www.example.com/processForm.php" method="POST">

または、フル ドメインの使用を停止することもできます。

これが発生する一般的な場所は、プログラマーが構成オブジェクトを定義するプラグインを使用する場合です。おそらく、その構成オブジェクトが誤って www 以外のバージョンを指している可能性があります。次のコードを想像してください。

$config = array('domain'=>'example.com', 'othersettings'=>'more here');

フォームは、次のようにして作成されることがあります。

<form action="<?php echo $config['domain'] ?>/processForm.php" method="POST">

これは www のないバージョンに変換され、POST 値が失われます。

幸運を!

于 2013-02-10T21:13:22.427 に答える