1

を複数の設定時に私のエラーページが404ページ

<?php 
$path_parts = pathinfo($_SERVER['REQUEST_URI']); 
$parts = explode('/', $path_parts['dirname']); 
if (in_array("abcde", $parts)) 
{ 
    header('Location: https://example.com/vwxyz/abcde-error-page.php'); 
    exit(); 
} 
else 
{ 
    header('Location: https://example.com/vwxyz/error-404-page.php');  
    exit(); 
} 
?> 

でその全体がPHPファイル、で302リダイレクトを回避私は、「ABCDE」のディレクトリに存在しないURLにアクセスしてくださいユーザーが欲しいです特定のエラーページを参照し、URLはhttps://example.com/vwxyz/abcde-error-page.phpで、ステータスコードは302にする必要があります。これは問題なく動作しています。

は私がに(example.com上のどこにも「VWXYZ」ディレクトリに、または)他の存在しないURLにアクセスしてくださいユーザーが参照https://example.com/vwxyz/error-404-page.phpをしたいが、404のステータスコードを返されると、ブラウザのURLは誤って入力されたものでなければなりません。もちろん、これはヘッダー( 'Location ...'では動作しません。結果がショッピングカートを空にしてユーザーをログアウトするため、file_get_contentsまたはincludeを使用することはできません(ログインしている場合)

には、.htaccessファイルを編集せずにに複数の404ページがあると感じています(実際にはもっと簡単な方法です)。そして、メインのエラーページは、通常のエラーページと全く同じように動作することが重要ですが、もう一方( "abcde"ディレクトリ)はリダイレクトであり、 "abcde"ディレクトリの特別なエラーページはそのディレクトリにありません(ユーザーはディレクトリからリダイレクトされ、404状態を返してはならない「エラー」ページが表示されます)。

+0

*「私は、引数がでしょうが(.htaccessファイルを編集することなく、複数の404ページを持っている簡単な方法があることを感じておそらくそれは実際にはもっと簡単な方法です)。 "* ...ええ、私はこれが3行になると確信しています.htaccess – CD001

答えて

1

私が質問を正しく理解していればで、ルートは.htaccessという非常に簡単です。 /abcde/

  • はURL ない
  • がされたファイルですと

    1. は、URLが始まるん:

      # enable mod_rewrite and route the request 
      RewriteEngine On 
      RewriteCond %{REQUEST_FILENAME} ^/abcde/?.*$ 
      RewriteCond %{REQUEST_FILENAME} !-f 
      RewriteCond %{REQUEST_FILENAME} !-d 
      RewriteRule ^.*$ /vwxyz/abcde-error-page.php [R=302,L] 
      
      # sets a custom 404 page 
      ErrorDocument 404 /vwxyz/error-404-page.php 
      

      まず、あなたはその後、上の書き換えエンジンを切り替える3つのチェックを実行する必要がありますURL ディレクトリ

    これらのものがすべて真であれば、(302の場合)/vwxyz/abcde-error-page.phpになりたい

    真の404エラーの場合は、デフォルトのErrorDocument 404 ...の構文を使用できます。

    (OK、これは.htaccessの中に6行だった - 私は推測の倍の複雑な)

  • +0

    これは完全に機能しました。実際の問題は実際には、他の方法がより適している場合にPHPですべてをやろうとする傾向があるように思えます。 – jfxamilton