更新: 結局のところ、以下は実稼働サーバーのキャッシュの問題が原因です。思慮深い回答を提供してくれたすべての人に感謝します。
次のようなURLを受け取るphpページに単純な関数があります。
http://myurl.com/mypage.html?param1=value1
そしてそれを次のように変換します:
http://myurl.com/searchpage.html?param1=value1
page.html の部分を入れ替えるだけです。
これを行うには、次を使用します。
$currentUrl = $this->getCurrentUrl(); // 現在の URL を取得します。つまり、'http://myurl.com/mypage.html?param1=value1' です。 // 現在の URL から検索パターンを導き出す $pattern = "/" . str_replace(array("/", ".", "-"), array("\\/", "\\.", "\\-"), $currentUrl) . "/"; // 「mypage.html」を取り除く $newUrl = preg_replace($pattern, 'http://myurl.com/', $currentUrl); // 疑問符を正しいページに置き換えます $newUrl = str_replace("/?", "/searchpage.html?", $newUrl);
上記のコードは正確なコードではありませんが、適切な表現です。1 つのサーバーでは問題なく動作しますが、本番環境にプッシュすると、preg_replace が機能しません。最初に str_replace を使用しようとしました。ローカルの開発マシンでも動作しますが、運用サーバーでは動作しません。
URL変数が正しく入っていることを確認しました。何か案は?