1

過去 24 時間、ここと Google 検索の両方で問題の解決策を探しましたが、何も見つかりませんでした。ただし、これがどこかに重複している場合は申し訳ありません。

PHP で記述された私のサイトの最後のバージョンでは、正しいページを取得するために次のようなリクエストを使用した 1 つのインデックス ページしかありませんでした。

?public=view/thispage
?page=account/loggedin

私は現在、サイトの新しいバージョンを php で書いています。たとえば、検索エンジンに適した URL / スラッグを作成しようとしています。

/page/view/thispage
/account/login

以下のコードの上部を使用して、仮想サブドメインが各クライアントで機能するように管理し、下部を使用してスラッグページを機能させることができました。

私が抱えている問題は、サイトにサインアップしたり、ユーザープロファイルを編集したりするためのフォームなどのフォームにあります。このサイトで、apache の書き換えでは $_POST 変数をスクリプトに渡す必要があることを読みました。リダイレクトしますが、私は書き換えを使用しており、フォームデータがスラッグ (/profile/edit など) に渡された場合は機能しませんが、たとえば virtualsubdomain.mydomain.com/test.php に渡された場合は機能します.

以下の htaccess ファイルを修正し、$_POST 変数をスラッグ スクリプト (以下のコードの index.php) に渡せるようにする方法を見つけて助けてもらえますか? 私が見逃しているのはおそらく小さなことだけです。

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.mydomainhere.org
RewriteCond %{HTTP_HOST} ^(.+).mydomainhere.org/^(.+)
RewriteRule ^([^/]*)$ http://mydomainhere.org [P,L]

ErrorDocument 404 /index.php

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php
</IfModule>

仮想のみのサブドメインに存在するphpファイルで投稿変数を読み取ることができる理由がわかりませんが、それらをスラッグ(/ profile/editprofileなど)に投稿すると読み取ることができません。私のサーバーではグローバル変数がオフになっていますが、次の例ではデフォルトの空白の変数が表示されるため、明らかに渡されていません。

$test = ''; //define the variable to please global vars off
$test = $_POST["namehere"];
echo $test;

どんな助けでも大歓迎です。おそらくわかるように、カスタムエラーファイルを含める以外の目的でhtaccessファイルを使用するのはかなり初めてです。

4

1 に答える 1

1

あなたの .htaccess と他の人が同じ問題を抱えているため、推測しているだけです-サブドメイン(またはを含まないURLRewriteCondを除く)をドメインURLにリダイレクトせずに-私が正しく理解した場合:wwwwww.www.

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.mydomainhere.org
RewriteCond %{HTTP_HOST} ^(.+).mydomainhere.org/^(.+)
RewriteRule ^([^/]*)$ http://mydomainhere.org [P,L]

次に、あなたのフォームでは、おそらくaction含まれていない属性にwww.URL があるため、このアクション URL がリダイレクトされ、POST が失われる可能性があります...

action次を含む URL をフォーム属性に入力してみてくださいwww.

<form method="POST" action="http://www.mydomainhere.org/my_page_to_post_to.php">

多分これは役立つでしょう...

于 2012-06-20T13:43:43.010 に答える