2017-09-01 9 views
0

希望の結果を得るには、正しい.htaccessコードを書いてください。PHPクエリーストリングをhtmlに変換する書き換えルール

私は以下のページがあります。

www.mydomain.com/?exam=/hp-certification/を

www.mydomain.com/?exam=/cisco-certification/

www.mydomain.com/?exam=/oracle-exam-prep/

www.mydomain.com/?exam=/faq/

www.mydomain.com/?exam=/support/

そして、そこの多くのより多くのページがありますが、あなたは固定部分があることに気づくことができます。

www.mydomain.com/?exam=代わりにクエリ文字列のリンクを使用して、私はページ上のように動作するには、次のリンクをしたいです:

www.mydomain.com/hp-certification/

www.mydomain.com/cisco-certification/

www.mydomain.com/oracle-exam-prep/

WWW。 mydomain.com/faq/

www.mydomain.com/support/

などです。

+0

[最小限で完全で検証可能な例を作成する方法] –

答えて

1

あなたのリンクはwww.mydomain.com/?exam=hp-certification/のようになり、書き換えルールは.htaccessファイルになります。

RewriteEngine On 
RewriteRule ^([^/.]+)$ /?exam=$1 [L] 
+0

申し訳ありませんが、htaccessファイルに上記のコードを追加した後、http://にアクセスしようとするとwww.example.com/hp-certification/次のエラーが表示されます。見つからない 要求されたURL/hp-certification /は、このサーバー上に見つかりませんでした。 さらに、ErrorDocumentを使用して要求を処理しようとしているときに、404 Not Foundエラーが発生しました。 –

+0

'RewriteEngine On RewriteRule ^([^ /] *)\ $ /?exam = $ 1 [L]'これを試してください。 また、Webサーバー(apache/nginx)mod_rewriteが有効で許可されていることを確認してください。書き換えルールを生成し、ここで詳細を学ぶことができます。http://www.ipdistance.com/mod_rewrite.php –

0

あなた.htaccessファイルに次のルールを使用していることを行うことができます。

RewriteEngine On 
RewriteCond %{QUERY_STRING} exam=(.+) [NC] 
RewriteRule ^(.*)$ http://www.example.com/%1? [R=301,NC,L] 

したがって、上記のは、何をするのでしょうか?

最初に条件としてexam=というクエリが使用されます。この条件が満たされた場合は、(.+)を使用して任意のバージョンの変数を取得します。

次に、301リダイレクトを使用してURLを書き換えて、http://www.example.com/anything/と表示します。 %1を使用すると、変数をexam=から取得し、?を使用して、元のクエリ文字列が新しく書き換えられたURLの末尾に表示されないようにします。

これをテストする前に、キャッシュをクリアすることを確認してください。