我正在运行一个网站,我正在尝试自己的slug机制。
这是我的.htaccess文件内容
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,QSA]
</IfModule>
并在我的 index.php 中,我有以下代码
$_REQUEST['action'] = trim($_SERVER['REQUEST_URI'],"/");
...
if (!empty( $_REQUEST['action'] )) {
$action = explode("/", $_REQUEST['action']);
$slug = $action[0];
$pageName = $slug.".php";
if (file_exists($pageName)) {
require_once $pageName; // 404 status code
}
else {
echo 'Your page is not found'; // 200 status code
}
} else {
require_once 'welcome.php';
}
现在它将如何运作
/school will be mapped on school.php
/mobile will be mapped on mobile.php
/about will be mapped on about.php
显然这项工作非常精细,内容加载得很好,但问题是HTTP status code
404
/some-thing-random
它显示此行echo 'Your page is not found';
,其中包含 200状态代码(请注意,某些东西 - random.php不存在)
对我来说有什么奇怪之处如下,我刚刚在.htaccess
文件中添加了以下行,现在工作正常,有200条消息
Options +FollowSymLinks -MultiViews
所有关注manually
设置标题的人:我没有。并且它不应该,所有类型的URL都会被index.php拦截,至少这是我对你的.htaccess文件的理解
www.mysite.com/about
并将文件about.php
重命名为xabout.php
,然后执行以下操作
$fileName = 'x'.$slug.'.php';
require_once($fileName);
一切正常
现在我的问题是究竟什么是幸福的?任何人请向我解释这个(还请注意我使用的是GoDaddy托管)
答案 0 :(得分:0)
要发送404代码,必须在标题中指明。
上的更多信息标题(&#34; HTTP / 1.0 404 Not Found&#34;);