0

mod_rewriteを使用して、所有している動的URLをクリーンアップしようとしています。

サイトのルートにある私の.htaccessは次のとおりです。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^equipment/AlarisSystem/([^/]*)/([^/]*)$ /equipment/AlarisSystem/?manu=$1&model=$2 [L]

http://www.mysite.com/equipment/AlarisSystem/?manu=test1&model=test2からに書き直したいhttp://www.mysite.com/equipment/AlarisSystem/test1/test2

上記の「クリーンな」アドレスを入力すると、404エラーが発生します。私は調査を行いましたが、どこが間違っているのかわかりません。はい、mod_rewriteが有効になっています。ご協力いただきありがとうございます。

編集 .htaccessファイルが読み取られていることを知っています。私はこれをチェックするために行いました:

Redirect /google.html http://www.google.comこのルールは正しく機能します。

4

1 に答える 1

1

あなたのルールは正しいようですが、おそらく正しい場所に書き直していないでしょう。書き直したいスクリプトはどこにありますか?ディレクトリに書き換えているようです。

おそらく、さらに適用する必要のある追加の書き換えルールがある場合は、最後のルール[L]フラグを削除する必要があります。そこにあると、mod_rewriteはルールの適用を停止します。

クエリがキャッチされているかどうかを確認する場合は、RewriteLogおよびRewriteLogLevelディレクティブを設定してください。

簡単に確認するために、[R]フラグを設定することもできます。そうすると、ブラウザでmod_rewriteの送信先を確認できます。

更新: 元のルールは、ディレクトリ内のindex.phpファイルでも機能しますが、おそらくRewriteBaseを使用してこれを解決することができます。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /equipment/AlarisSystem/
RewriteRule /([^/]*)/([^/]*)$ index.php?manu=$1&model=$2 [L]

そのルールが機能しない理由はわかりません。発生する元のエラーは、おそらく書き換えを行っている場所に関連しています。これは、ルートの.htaccessファイルからのものです。

于 2012-06-06T19:42:21.477 に答える