Soru 404 hatası htaccess'i yönlendirdikten sonra URL'yi yeniden yaz


Bu yüzden biraz garip göründüğünü biliyorum ama tutarlılık adına, tüm URL'lerin bu şekilde görünmesini istiyorum: http://domain.com/page/ Şimdiye kadar düzenli sayfaları çalışıyorum ama hata sayfalarının düzgün çalışmasını sağlayamıyorum.

Kullanıcı, mevcut olmayan bir sayfayı veya dizini ziyaret ederse, tarayıcının sert yönlendirme yapmasını isterim: http://domain.com/404/ Ancak bu dizin aslında mevcut olmayacaktır. Hata sayfasının gerçek konumu /pages/errors/404.php altında olacak

Ayrıca, tüm çeşitli hatalar için kesin bir cevaba gerek duymama rağmen (400, 401, 403, 404, 500), bunların hepsini "uygun" URL'lerine yönlendirmek için hangi yöntemi uygulayacağım (örn.). http://domain.com/400/  http://domain.com/500/ vb.)

Herhangi bir fikir?


25
2017-11-13 19:36


Menşei




Cevaplar:


Bunu .htaccess'inizde deneyin:

.htaccess

ErrorDocument 404 http://example.com/404/
ErrorDocument 500 http://example.com/500/
# or map them to one error document:
# ErrorDocument 404 /pages/errors/error_redirect.php
# ErrorDocument 500 /pages/errors/error_redirect.php

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ /pages/errors/404.php [L]

RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ /pages/errors/500.php [L]

# or map them to one error document:
#RewriteCond %{REQUEST_URI} ^/404/$ [OR]
#RewriteCond %{REQUEST_URI} ^/500/$
#RewriteRule ^(.*)$ /pages/errors/error_redirect.php [L]

ErrorDocument Tüm 404'leri belirli bir URL'ye, tüm 500’lerden başka bir URL'ye yönlendirir (alan adınızla değiştirin).

Rewrite kuralları, bu URL'yi gerçek 404.php komut dosyanızla eşleştirir. RewriteCond düzenli ifadeler, daha genel hale getirilebilir, ancak, geçersiz kılmak istediğiniz tüm ErrorDocument kodlarını açıkça tanımlamanız gerektiğini düşünüyorum.

Yerel Yönlendirme:

Varolan bir dosyaya .htaccess ErrorDocument öğesini değiştirin (bulunmalıdır, aksi halde bir hata alırsınız):

ErrorDocument 404 /pages/errors/404_redirect.php

404_redirect.php

<?php
   header('Location: /404/');
   exit;
?>

Hata sayısına göre yönlendirme

Bir belirtmeniz gerekecek gibi görünüyor. ErrorDocument Yönlendirmek istediğiniz her hata için .htaccess satırında (bkz: Apache ErrorDocument ve Apache Özel Hatası). .htaccess Yukarıdaki örnekte birçok örneği vardır. Yukarıdaki, 404_redirect.php değerini değiştirmek için genel yönlendirme komut dosyası olarak aşağıdakileri kullanabilirsiniz.

error_redirect.php

<?php
   $error_url = $_SERVER["REDIRECT_STATUS"] . '/';
   $error_path = $error_url . '.php';

   if ( ! file_exists($error_path)) {
      // this is the default error if a specific error page is not found
      $error_url = '404/';
   }

   header('Location: ' . $error_url);
   exit;
?>

41
2017-11-13 19:45



Tam olarak aradığım şey ... ama ErrorDocument deklarasyonunda göreceli bir yol kullanmak için zaten var mı? - LeinardoSmtih
Göreceli bir yol kullanırsanız, varolan bir dosyaya işaret etmeniz gerekir ve bu dosya yönlendirmeyi ex -istant / 404 / url'ye yönlendirebilir. Cevabımı şimdi göstermek için düzenleniyor ... - Jay
Herhangi bir hata için yeniden yönlendiren tek bir dosyam olabilir mi? Bir url sorgusu kullanarak mı? - LeinardoSmtih
@LeinardoSmtih - Daha fazla örnek göstermek için tekrar güncelledim. Umarım yardımcı olur! - Jay


Bu kodu .htaccess dosyanıza koyun

RewriteEngine On
ErrorDocument 404 /404.php

404.php dosya adıdır ve köke yerleştirilir. Tam yolu buraya koyabilirsiniz.


9
2017-09-24 11:12





Bu kuralı eklemeyi deneyin. üst htaccess'iniz:

RewriteEngine On
RewriteRule ^404/?$ /pages/errors/404.php [L]

Sonra bunun altında (veya sahip olduğunuz diğer kurallar):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^ http://domain.com/404/ [L,R]

2
2017-11-13 19:46



Cevabınız için teşekkür ederim ama bu 401 ve 500 gibi diğer hata formları ile söyleyemem ... - LeinardoSmtih


.Htaccess dosyanızda, apache kullanıyorsanız, şunları deneyebilirsiniz:

Hata Sayfası için Kural - 404

ErrorDocument 404 http://www.domain.com/notFound.html


1
2017-11-13 19:44