現在、WordPressの.htaccessルールを使用してindex.phpを「クリーンアップ」しているため、カスタムPHPソリューションを使用してWWWをスクリプトURLに強制的に追加しています。強制WWW.htaccessルールは、WordPressのindex.phpクリーンアップルールと互換性がありません。
私のスクリプトを使用すると、「http://scripturl.com/whatever」を参照できます。次に、私のスクリプトはリクエストURI「/ whatever」のケースを持ち、そのビューに対して何らかのアクションを実行します(またはそれぞれのテンプレートをコンパイルします)。
スイッチが呼び出される前に一連のチェックを追加しました。これにより、REQUESTのHTTPホストが、スクリプトで定義された変数のHTTPホストと一致することを確認します。これにより、「www」の追加が強制されます。
私の問題は、(IEのみを使用しているように見える)URLを入力すると、「http://myscript.com/whatever」と言うと、スクリプトがURLを「http://www.myscript.com/whatever」に変換することです。 "、予想どおり、ヘッダーを新しいURLにリダイレクトします。ただし、URIリクエストを「whatever」から「somethingelse」に変更すると、ページは期待どおりに「http://www.myscript.com/somethingelse」に移動しますが、少しの間、「whatever」がURLで点滅します。スクリプトが「http://www.myscript.com/somethingelse」にリダイレクトする前。
明確にするために:リクエスト「www.myscript.com/sam」から始めます。リクエストが読み込まれます。/samを/bobに変更->ページが「www.myscript.com/bob」に変更されますが、/bobがロードされる前に「/sam」がURLバーで短時間点滅します。
それはただ「きれい」に感じません。私のコードは余分なヘッダージャンプか何かをしているように感じます。「www.wordpressurl.com/valid-page」にアクセスし、URIを「www.wordpressurl.com/another-valid-page」に変更することで、これをワードプレスと対比しました- 「/valid-」が表示されません「/another-valid-page」にアクセスしようとすると、URLバーで「page」が点滅します。その逆も同様です。
これが私のコードです:
// Requested URL built from url in address bar
$requested_url = is_ssl() ? 'https://' : 'http://';
$requested_url .= $_SERVER['HTTP_HOST'];
$requested_url .= $_SERVER['REQUEST_URI'];
// Correct url built from predefined variable
$correct_url = is_ssl() ? 'https://' : 'http://';
// "Correct" script url
$user_home = @parse_url('http://www.myscript.com');
if ( !empty($user_home['host']) )
$correct_url .= $user_home['host'];
else {
die('malformed url');
}
$correct_url .= $_SERVER['REQUEST_URI'];
// If URL in address bar is not proper, perform redirect (preserve URI)
if ($correct_url != $requested_url) {
hc_redirect($correct_url, 301);
}
// Get page from request, handle accordingly
$page = $_SERVER['REQUEST_URI'];
switch ($page) {
/* Index */
case '/':
echo "Index queried <br />";
break;
...
新しいURIが(リダイレクトから)ロードされる前に、古いURIがナビゲーションバーで点滅するのはなぜですか?私が言ったように、これはIEでのみ発生するように見えますが、WordPressは(IEまたは他のブラウザーで)これと同じ動作をしないため、コードに何か問題があるはずです。私の知識。私はPHPに少し慣れていません。
何かご意見は?
編集:hc_redirect、およびその他の使用済み機能: http: //pastebin.com/fVNEckEg