所以我知道这可能看起来有点奇怪,但为了保持一致性,我希望所有网址都以这种形式出现:
http://example.com/page/
到目前为止,我已经使常规页面正常工作,但我似乎无法使错误页面正常工作。
如果用户访问不存在的页面或目录,我希望浏览器硬重定向到:
http://example.com/404/
然而,该目录实际上并不存在。错误页面的真实位置将在下面
/pages/errors/404.php
另外,虽然我不需要所有各种错误(400、401、403、404、500)的确切答案,但我将应用给出的任何方法将所有这些错误重定向到它们的“正确”URL
例如。
http://example.com/400/
http://example.com/500/
etc.
有任何想法吗?
在你的 .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
将所有 404 重定向到特定 URL,将所有 500 重定向到另一个 url(替换为您的域)。
重写规则将该 URL 映射到实际的 404.php 脚本。如果您愿意,可以使 RewriteCond 正则表达式更加通用,但我认为您必须显式定义要覆盖的所有 ErrorDocument 代码。
本地重定向:
将 .htaccess ErrorDocument 更改为存在的文件(必须存在,否则会收到错误):
ErrorDocument 404 /pages/errors/404_redirect.php
404_redirect.php
<?php
header('Location: /404/');
exit;
?>
根据错误号重定向
看起来您需要指定一个ErrorDocument
.htaccess 中针对您要重定向的每个错误的行(请参阅:Apache 错误文档 and Apache 自定义错误). The .htaccess上面的例子中有多个例子。您可以使用以下内容作为通用重定向脚本来替换上面的 404_redirect.php。
错误重定向.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;
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)