我有一个显示各种元素的页面,即使它从数据库调用的id不存在或被删除(这会引发各种丑陋的错误以及搜索引擎继续列出不存在的页面).
如果$ id不存在,你可以修改下面显示的页面代码的第一部分来发送404(或者至少发送到包含404标题的projecterror.php)吗?非常感谢!
<?php
include_once("includes/linkmysql.php");
$adda=$_GET['a'];
$cont=$_GET['c'];
$select="SELECT * FROM projects where id='$id'";
$qselect = mysql_query($select);
while ($row = mysql_fetch_array($qselect)) {
Run Code Online (Sandbox Code Playgroud)
由于Vivek Goel的原始评论结果 由Matt Wilson亲切建议的以下修改导致有效条目正确显示页面但不存在的页面显示此修改代码下面的错误:
<?php
include_once("includes/linkmysql.php");
$adda=$_GET['a'];
$cont=$_GET['c'];
$select="SELECT * FROM projects where id='$id'";
$qselect = mysql_query($select);
if( mysql_num_rows( $qselect ) === 0 )
{
header("HTTP/1.1 301 Moved Permanently");
header( 'Location: http://examplesite.domain/errorpage' ) ;
exit;
}
while ($row = mysql_fetch_array($qselect)) {
Run Code Online (Sandbox Code Playgroud)
上述修改导致的错误:
Warning: Cannot modify header information - headers already sent by (output started at …Run Code Online (Sandbox Code Playgroud) 我们的网站是中文的,主页面的一部分显示了其他页面标题的列表,其最大长度被称为'26'(我假设这是使用英文字符计数,如果中文字符是使用英语?).我们用于此的线是:
<?php echo anchor('projects/'.$rs->url_project_title.'/'.$rs->project_id,substr(ucfirst($rs->project_title),0,26),'style="text-decoration:none;"'); ?>
但是,如果标题确实很长,那么代码会截断它,但是最后两个中文字符总是显示为 ,因为我猜它是使用英文版本的单词并分割中文字符(不知何故).也许我在想这个!?
例如....
原版的:
?????????????????????
截断版本:
??????????
您是否可以建议进行修改以启用所需数量的字符而不会产生 ??
作为一点背景,我们有两个域:
mydomain.cz指向mydomain.com的服务器并使用相同的目录.我们在.htaccess中有一个RewriteRule(两个域共享)如下:
RewriteRule ^([0-9]+)/?$ project.php?id=$1 [NC,L] # Handle project requests
RewriteRule ^([0-9]+)/?$ project_cz.php?id=$1 [NC,L] # Handle project requests
Run Code Online (Sandbox Code Playgroud)
这个重写规则显示mydomain.com/1同时使用内容从mydomain.com/project.php?id=1(例如)和mydomain.cz/1也拉动mydomain.com/project.php?id=1内容.但是,我希望任何mydomain.cz/(insert id here)从project_cz.php中获取内容?id =(在这里插入id)而不是显示服务器的域名,mydomain.com - 任何想法?
例如:mydomain.cz/1将使用mydomain.com/project_cz.php?id=1而mydomain.com/1将使用mydomain.com/project.php?id=1
非常感谢.