Rewrite URL after redirecting 404 error htaccess

前端 未结 4 1101
南旧
南旧 2020-11-27 12:36

So I know this may seem a little strange but I for sake of consistency, I would like all my urls to appear in this form: http://domain.com/page/ So far I have gotten the reg

相关标签:
4条回答
  • Put this code in your .htaccess file

    RewriteEngine On
    ErrorDocument 404 /404.php
    

    where 404.php is the file name and placed at root. You can put full path over here.

    0 讨论(0)
  • 2020-11-27 12:56

    In your .htaccess file , if you are using apache you can try with

    Rule for Error Page - 404

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

    0 讨论(0)
  • 2020-11-27 12:59

    Try adding this rule to the top of your htaccess:

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

    Then under that (or any other rules that you have):

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^ http://domain.com/404/ [L,R]
    
    0 讨论(0)
  • 2020-11-27 13:03

    Try this in your .htaccess:

    .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]
    

    The ErrorDocument redirects all 404s to a specific URL, all 500s to another url (replace with your domain).

    The Rewrite rules map that URL to your actual 404.php script. The RewriteCond regular expressions can be made more generic if you want, but I think you have to explicitly define all ErrorDocument codes you want to override.

    Local Redirect:

    Change .htaccess ErrorDocument to a file that exists (must exist, or you'll get an error):

    ErrorDocument 404 /pages/errors/404_redirect.php
    

    404_redirect.php

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

    Redirect based on error number

    Looks like you'll need to specify an ErrorDocument line in .htaccess for every error you want to redirect (see: Apache ErrorDocument and Apache Custom Error). The .htaccess example above has multiple examples in it. You can use the following as the generic redirect script to replace 404_redirect.php above.

    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;
    ?>
    
    0 讨论(0)
提交回复
热议问题