2

ここで私の問題を説明します:

http://mysite.com/movie/20000

に書き換える必要があります

http://mysite.com/movie.php?id=20000

私のhtaccessファイル:

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie/([0-9]+)$ movie.php?id=$1

私のローカルホストの WAMP インストールでは問題なく動作しますが、Linux ホストでオンラインにすると完全には動作しません。movie.php ページに移動しますが、GET パラメータ ID が指定されていないようです。

編集 :

私が使用する場合

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie([0-9]+)$ movie.php?id=$1

それから

http://mysite.com/movie20000

正しいページに移動しますが、それ/movie/20000だけではありません/movie20000

また、私のホストはへの訪問を自動的に書き換えているようmysite.com/movieですmysite.com/movie.php

4

2 に答える 2

3

長い間探して、私の素敵な髪の一部を引っ張った後、私は解決策を見つけました.

ちょうど追加しました

Options -MultiViews

私のhtaccessファイルに追加すると、それが修正されました。

なんで?拡張子なしで .php が URL に追加されていたため、これは本当に必要ありませんでした。

于 2012-06-07T22:56:48.523 に答える
0

これはうまくいくはずです。

RewriteRule ^movie/([0-9]+)$ http://mysite.com/movie.php?id=$1 [NC,L]

[NC, L] を忘れないでください。これは、大文字と小文字を区別しない、最後のルールを意味します... そうしないと、htaccess ルールを処理し続け、他のルールをトリガーする可能性があります。

それでも、以下のものは良いアドバイスです.... :)

Rewrite モジュールが apache でロードされているかどうかを確認します。httpd.conf ファイルで次の行を探します。

LoadModule rewrite_module modules/mod_rewrite.so

Apache 構成で、システムまたは仮想ホスト定義で .htaccess ファイルが許可されているかどうかを確認してください。

また、より単純な書き換えでテストして catch all し、それだけでテストして、このように機能するかどうかを確認します (テストを制限するために、htaccess ファイル内の他のすべてを削除します)。

RewriteEngine On
RewriteRule ^(.*)$ http://www.google.com [L,R=301]

Apache の設定が正しく設定されていれば、サイトへのリクエストはすべて Google に送信されます。

于 2012-06-07T13:28:47.793 に答える