1

index.php のフォームで GET メソッドを使用して呼び出し?page=aboutています (つまり、「about」は選択オプションです)。[送信] をクリックすると、URL は次のようになります。

http://example.com/?page=about

ただし、代わりに次のようにしたいと思います。

http://example.com/about

ただし、スクリプト (PHP) を index.php で動作させたままにします (「about」ファイルは必要ありません)。フォームが送信されたら、同じページで GET 値を利用したいと思います。php スクリプトを動作させることはできます。正常に反応しますが、URL の書き換えはまったく動作しません。

次の htaccess の書き換えを試みましたが、何も行われず、URL は上記のままです。

私のhtaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?page=$1 [L,QSA]

これがうまくいかない理由がわからないので、あなたの助けに大いに感謝します。私はネットを検索しましたが、誰もがこのルールを指摘していますが、私にとってはまったく何もしません.

よろしくお願いします!

編集:

私が使用しているphpコードを投稿させてください。申し訳ありませんが、見逃しました。actionフォームを送信するときに同じ属性に送信されていることがわかっているブラウザーで使用しているため、今のところ属性を削除しました。

<?php

$page = $_GET['page'];

switch($page){
 case 'about': echo 'I am me'; break;
 case 'galery': echo 'Nice pictures here'; break;
}

?>

<body>

<form action="/" method="get">
<select name="page">
    <option value="about">about</option>
    <option value="galery">galery</option>
</select>
<input type="submit" value="Submit" />
</form>
</body>

編集#2:

action="/"anubhavaのソリューションが機能するためには、フォームタグに追加する必要がありました。

4

2 に答える 2

0

試す

 ...
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

index.php のフォームで GET メソッドを使用して ?page=about を呼び出しています

正しいリンクを呼び出してみてください。' /about' の代わりに ' ?page=about'

于 2013-04-07T17:36:02.217 に答える