0

Web サイトを再配置し、同じ URL (ページにアクセスするための URL とブラウザーに表示される URL) を維持しながら、すべての顧客ページをディレクトリー (/customerPages) に移動したいと考えています。ApachePHP( )を使用してCakePHPいます。

次の方法で404 エラーページを再配線してみました。

// Redirect customers to customers landing pages under /customerPages
if (strpos($message,'customerPages') == false) {
    $url = 'http://'.$_SERVER['HTTP_HOST'].'/customerPages'.$message;
    $homepage = file_get_contents($url);
    echo $homepage;
}

ただし、このソリューションでは、相対パスを使用して書き込まれたすべてのイメージが壊れます。

後で、代わりにリダイレクトを使用してみました:

if (strpos($message,'customerPages') == false) {
    $url = 'http://'.$_SERVER['HTTP_HOST'].'/customerPages'.$message;
    header("Location: ".$url);
}

ただし、URL は変更されます。RewriteRule運が悪かったのでいじってみました。

最初、2番目、またはその他の方法を使用してこれを達成するにはどうすればよいですか?

4

2 に答える 2

1

別の方法、基本的な考え方:1. /oldpath/.htaccessファイルを入力します(ファイルが見つからない404エラーを処理します):

ErrorDocument 404 /oldpath/redirect.php

2. /oldpath/redirect.phpファイル(ハンドラー)-ファイルが新しい場所に存在する場合にのみ、新しいパスにリダイレクトします。

$url = parse_url($_SERVER['REQUEST_URI']);
$filename = basename($url['path']);

if(file_exists('/newpath/'.$filename)) {
  header('Location: /newpath/'.$filename);
}else{
  header('Location: /your_real_404_handler');
}
于 2013-01-20T15:35:04.767 に答える
1

イメージ要求を新しい場所 (/customerPages) から古いパスにリダイレクトする必要があります。mod_rewrite Apache モジュールを使用して、そのようなリクエストをリダイレクトできます。

RewriteEngine on
RewriteRule ^/customerPages/(.*\.jpg|.*\.gif|.*\.png) /oldpath/$1 [R]
于 2013-01-20T14:45:45.897 に答える