1

ページの書き換えルールを作成する必要がありますが、機能しません。apacheのmod_rewriteを有効にしています

これは私の.htaccesファイルです:

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteRule ^gameofthrones/(full|house|characters)\.(all|Stark|Lannister)\.(html|xml|json)$ index.php?output=$3&house=$2&info=$1
</IfModule>

しかし、このURLを入力すると、localhost / school / str-webservices / eindopdracht / index.php?output = html&house = all&info = full

それはそのままですが、次のようになります:localhost / school / str-webservices / eindopdracht / gameofthrones / full / all / html

私は何が間違っているのですか?

前もって感謝します、

マーク

4

3 に答える 3

1

URL 書き換えの概念を誤解しています。

に書き換えるとしましょ/helloindex.php?get=hello。これは、それindex.php?get=helloが引き続き機能することを意味しますが、 と書く/helloと、内部ではそれが にマップされindex.php?get=helloます。

したがって、ユーザーのアドレス バーには が表示されています/helloが、実際には が表示されてindex.php?get=helloいます。

これは をキャンセルするindex.php?get=helloわけではありません。誰かがその URL を介してページにアクセスした場合に、ユーザーが にリダイレクトされるという意味ではありません/hello

于 2012-06-23T09:12:50.230 に答える
1

書き換えられていない URL を実際に書き換えられたフォームにリダイレクトする別のルールを追加します。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /school/str-webservices/eindopdracht/

    RewriteCond %{REQUEST_URI} ^school/str-webservices/eindopdracht/index\.php
    RewriteCond %{QUERY_STRING} ^output=([^&]*)&house=([^&]*)&info=([^&]*)$
    RewriteRule ^(.*)$ gameofthrones/%3.%2.%1? [R=301,L]

    RewriteRule gameofthrones/(full|house|characters)\.(all|Stark|Lannister)\.(html|xml|json)$ index.php?output=$3&house=$2&info=$1 [PT,NC,L]
</IfModule>

次に call:localhost/school/str-webservices/eindopdracht/index.php?output=html&house=all&info=fullにリダイレクトします:localhost/school/str-webservices/eindopdracht/gameofthrones/full.all.html

于 2012-06-23T09:16:36.627 に答える
0

ディレクトリの問題である可能性があると思います:

  • .htaccessファイルはディレクトリ ツリーのどこにありますか?
  • index.phpにあるファイルはどこにありますか?

index.phpファイルが同じディレクトリ (同じ ./school/str-webservices/eindopdracht/ と仮定します) にある場合は、以下を追加するだけです。

RewriteBase /school/str-webservices/eindopdracht/

after RewriteEngine On

問題がわからなかったらすみません。

さよなら。

于 2012-06-23T09:33:09.633 に答える