Эџa*_*мaи 6 .htaccess mod-rewrite
我正在使用.htaccess显示错误的自定义HTML页面(401,404,500 ...等).我想限制直接访问包含html页面的errors文件夹.在errors文件夹的.htaccess文件中,我有以下内容:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain\.com
RewriteRule \.(html|htm)$ - [F]
Run Code Online (Sandbox Code Playgroud)
这似乎没有用,我得到:
a 500 Internal Server Error error was encountered while trying to use an
ErrorDocument to handle the request.
Run Code Online (Sandbox Code Playgroud)
我必须对.htaccess文件进行哪些更改才能使其正常工作.我也想知道如果我把error文件夹放在public_html文件夹之外它是否会起作用?
这是你应该放在.htaccess中的内容(在你的public_html中)
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^(www\.)?mydomain\.com
RewriteRule \.(html|htm)$ - [F]
Run Code Online (Sandbox Code Playgroud)
如果有效,请告诉我
在 .htaccess 文件中,将所有错误重定向到一个 php 文件
ErrorDocument 403 /errors.php
ErrorDocument 404 /errors.php
ErrorDocument 500 /errors.php
Run Code Online (Sandbox Code Playgroud)
在 error.php 中使用 $_SERVER['REDIRECT_STATUS'] 和 if else 语句来检测错误并显示自定义消息
if($_SERVER['REDIRECT_STATUS'] == 403)
{
die("Forbidden");
}
else if($_SERVER['REDIRECT_STATUS'] == 404)
{
die("NOT FOUND");
}
else if($_SERVER['REDIRECT_STATUS'] == 500)
{
die("Server Error");
}
else if($_SERVER['REDIRECT_STATUS'] == 200)
{
// user is trying to directly access the errors page, redirect to index.php
header("Location: index.php");
}
else
{
// all other error codes
}
Run Code Online (Sandbox Code Playgroud)
这是HTTP 状态代码的列表。为每个要检测的错误编写一个 else if 语句。未检测到的错误将落在 else 块中
| 归档时间: |
|
| 查看次数: |
1438 次 |
| 最近记录: |