0

ホスティング サーバーの内部書き換えに問題があります。これは私の開発およびテスト サーバーでは完全に機能しますが、.htaccess が運用共有ホストに移植されると、内部の書き換えは行われません。

.htaccess が読み取られている (検証済み) 「リダイレクト」を伴う RewriteRule は機能しますが、内部の書き換えは機能しません。ブラウザの URL には正しいフレンドリ URL が表示されますが、内部の書き換えは行われておらず、ホームページに行き着いています。

ここにリライトの一部があります:

Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} -f [OR]
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]
RewriteRule ^contact/$                  index.php?pid=3 [QSA,L]

したがって、ブラウザの URL には www.mydomain.com/contact/ が表示されますが、ホームページにいます。

RewriteRule ^contact/$ を ^contact/$ http://www.mydomain.com/index.php?pid=3に変更すると、リダイレクトされますが、それは私が望むものではありません..内部の書き換えが必要です。

ログを見ると、404 を受信して​​いないため、ディレクトリのベース/ルートにアクセスしているように見えます。

何か案は??

ありがとう!ハンジ

更新: ホスティング プロバイダーから電子メールを受け取りました。彼らは私の「スタイル」の書き直しに慣れていないことを示しており、これは彼らが提案したものです:

RedirectPermanent /contact/ http://www.mydomain.com/index.php?pid=3

うーん...ばか。書き直しが機能しない原因を特定できることを願っています。Apacheの設定の問題だと思いますか?助けてください。

4

1 に答える 1

0

あなたのRewriteRule ^contact/$ index.php?pid=3 [QSA,L]ルールを試してみると、私の Apache は への内部リダイレクトを試みましたが/full/filesystem/path/to/document/root/index.php、これはもちろん、URL パスとして使用されたときに正しい場所にマップされません。ターゲットをに変更する/index.php?pid=3とうまくいくようです。

于 2012-06-28T16:36:55.543 に答える