0

PHP で Web サイトを作成し、htaccess 書き換えルールを使用しています。コアphpページを非表示にする私のhtaceessコードは


RewriteCond %{REQUEST_URI} search
RewriteRule search /directory/search.php?&q=$1

from でメソッド GET を使用してクエリを送信していますが、フォームは


<form action="http://<?php echo $_SERVER['SERVER_NAME']?>/search" method="GET">
<span><input type="text" name="q" class="search rounded" placeholder="Search something... :)" x-webkit-speech speech onwebkitspeechchange="this.form.submit();"></span>
</form>

search.php の一時コードは


<?php

if(!isset( $_GET['q']))
    {
        echo '<p>Page is not set!</p>';
    }
        else
        {
            echo '<p>Search Page is running cool';
        }
?>

「hello」という単語を検索しているようなフォームで検索すると、URL「localhost/search?q=hello」が表示されます

もう1つは、「内部サーバーエラー500」が表示されることです

私は xampp を使用していますが、最初に htaccess が正しく機能しておらず、次に検索フォームが適切なクエリを送信していないと思います。だから私を助けてください。

4

1 に答える 1

0

あなたがしているのはGETリクエストタイプです。

パラメータを初期書き換え変数に渡す必要があります。

これを試して:

RewriteRule ^search/([^/]*)/$ /directory/search.php?&q=$1 [L]

GET ではなくデータを POST するには:

RewriteRule ^search /directory/search.php?q=$1 [NC,P]

「P」は、ルールの処理を停止するという点で「L」のように機能しますが、リクエストをそのままプロキシ モジュールに渡す必要があることもモジュールに伝えます (つまり、POST データは保持されます)。

また、必ず書き換えエンジンをオンにして、オプションを設定してください。書き換えエンジンをオンにしないと、500 エラーが発生します。

これは私が通常使用するものです:

Options +FollowSymlinks
Options -MultiViews 
RewriteEngine On
RewriteBase /
ErrorDocument 404 /error.php
ErrorDocument 300 /error.php
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
于 2013-07-26T05:50:07.700 に答える