标签: http-status-code-301

PHP页面重定向问题 - 无法修改标题信息

我有一个显示各种元素的页面,即使它从数据库调用的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)

php error-handling redirect http-status-code-301

14
推荐指数
1
解决办法
2万
查看次数

避免301重定向缓存

这是使用301/303/307重定向到动态短网址的后续问题,我尝试确定在目标网址频繁更改时实施短网址重定向的最佳方法.

虽然看起来301和307重定向都以相同的方式执行,但我关注的问题是301重定向缓存(如此处所述) - 是避免使用307重定向的最佳方法(我假设307重定向永远不会缓存?),或显式发送无缓存标头("缓存控制:无缓存,必须重新验证")?

redirect caching no-cache http-status-code-301 http-status-code-307

14
推荐指数
2
解决办法
2万
查看次数

设置从旧的经典ASP页面到新的ASP.NET网页表单的301重定向

我已经完成了使用ASP.NET Webforms开发一个网站并完成它我正在设置301重定向以确保旧网站的链接被正确重定向.

但是,旧网站是用经典ASP编写的.从旧的.asp页面到新的.aspx页面设置重定向的最佳方法是什么?(注意:我无法控制托管网站的服务器,因此我无法在IIS中执行任何操作)

asp.net redirect asp-classic http-status-code-301

14
推荐指数
2
解决办法
2万
查看次数

将default.aspx重定向到根虚拟目录

我有一个简单的ASP.NET 3.5应用程序在IIS7下运行在虚拟目录下.所以我的应用的网址就像是http://example.com/app.我想301将请求重定向到example.com/app/default.aspx到example.com/app以获得更好的SEO.我必须通过代码重定向,而不是通过任何IIS设置.我无法通过本文中提到的代码执行此操作:

http://www.4guysfromrolla.com/articles/072810-1.aspx

代码:

if (request.RawUrl.Equals("/default.aspx"))
{
newUrl = string.Format("{0}://{1}{2}",
                 request.Url.Scheme,
                 request.Url.Authority,
                 request.RawUrl.Remove(request.RawUrl.LastIndexOf("/default.aspx", StringComparison.OrdinalIgnoreCase)));

               context.Response.Status = "301 moved permanently";
               context.Response.AddHeader("Location", newUrl);
}
Run Code Online (Sandbox Code Playgroud)

当应用程序在虚拟目录下时,似乎进入无限循环.即使在301重定向导致无限循环之后,request.RawUrl属性也总是返回"/default.aspx".我该如何解决这个问题?

谢谢,

阿西夫

asp.net redirect response.redirect http-status-code-301

13
推荐指数
1
解决办法
7532
查看次数

无法删除301重定向

我愚蠢地在websiteA.com上进行了301重定向到websiteB.com.从.htaccess文件中删除它后,重定向仍在运行.我尝试从本地网络外部进行重定向.我已清除缓存并尝试使用其他浏览器.

有人有什么建议吗?

更新:

如果我向此.htaccess文件添加302重定向,该网站将尊重它.当我删除它时,仍然会发生旧的301重定向.

.Ataccess文件为websiteA.com:

# -- concrete5 urls start --

Options -Indexes

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
# -- concrete5 urls end --

#RewriteCond %{HTTP_HOST} ^.*$
#RewriteRule ^/?$ "http\:\/\/www\.websiteB\.co\.uk\/" [R=301,L]
Run Code Online (Sandbox Code Playgroud)

.htaccess redirect http-status-code-301

13
推荐指数
5
解决办法
2万
查看次数

Silex:使用Flash数据重定向

我需要将一个页面重定向到另一个页面,并在Silex中显示一条消息.希望有一种Laravelesque方式,但我非常怀疑它:

$app->redirect('/here', 301)->with('message', 'text');
Run Code Online (Sandbox Code Playgroud)

然后我想在我的模板中显示消息:

{{ message }}
Run Code Online (Sandbox Code Playgroud)

如果没有,还有另一种方式吗?

更新

我看到getFlashBagSymfony中有一种方法 - 是我应该使用的吗?具体来说,我正在使用Bolt内容管理系统.

php redirect http-status-code-301 silex

13
推荐指数
2
解决办法
7456
查看次数

htaccess具有子目录的多语言站点,默认为301

我在设置htaccess时遇到一些问题,允许使用子目录方法的多种语言,例如:

http://www.domain.com/en/
http://www.domain.com/sw/
http://www.domain.com/ie/
Run Code Online (Sandbox Code Playgroud)

另外,为了使事情复杂化,该项目目前还没有,它在开发服务器上.例如,我目前正在访问该项目:

http://dev.domain.com/devname/projectname/
Run Code Online (Sandbox Code Playgroud)

我希望以上内容自动301重定向到:

http://dev.domain.com/devname/projectname/en/
Run Code Online (Sandbox Code Playgroud)

这是我的htaccess:

Options +FollowSymLinks -MultiViews
RewriteEngine on

# ----------------------------------------------------------------------
# MULTI LANGUAGE SUB DIRECTORY
# ----------------------------------------------------------------------

RewriteCond %{REQUEST_URI} !^/(en|sw)/
RewriteRule ^(.*)$ en/$1 [R=301,L]

# ----------------------------------------------------------------------
# Rewrite rules
# ----------------------------------------------------------------------

## CASE STUDIES ##
RewriteRule ^casestudies/([^/\.]+).html$ index.php?controller=contents&method=viewCasestudy&link=$1 [L,QSA]

## PRODUCTS ##
RewriteRule ^products/([^/\.]+).html$ index.php?controller=contents&method=viewProduct&link=$1 [L,QSA]

RewriteRule ^([a-z{2}]+)(/)?$ index.php?controller=contents&method=viewHome&lang=$1 [L,QSA] # Default load
RewriteRule ^(/)?$ index.php?controller=contents&method=viewHome [L,QSA] # Default load
Run Code Online (Sandbox Code Playgroud)

以上将实际重定向到:

http://dev.domain.com/home/webserver_dir/devname/projectname/en/
Run Code Online (Sandbox Code Playgroud)

..如果我使用RewriteBase它似乎只是转到......

http://dev.domain.com/en/
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:如何使语言URL相对于其在我的开发服务器上的目录正常工作,然后理想情况下,它将在没有任何特定于环境的规则的情况下生效.

奖金问题:我是否需要在所有后续重写规则之前添加([az {2}] +)位,或者我是否可以捕获所有会影响所有其他规则的内容?

编辑-----------------------------

我建议把它减少到以下...... …

.htaccess multilingual localization http-status-code-301

13
推荐指数
1
解决办法
1万
查看次数

如何使用heroku的非www域?

我知道他们不支持它,但说真的,怎么办呢?将A-record指向一个只提供301到heroku的ip?听起来真的很蠢.我错过了什么吗?

有更简单的解决方法吗?

http heroku http-status-code-301 web

12
推荐指数
2
解决办法
7500
查看次数

StackOverflow就像URL Routing一样

我的理解是StackOverflow中的问题具有以下格式

http://stackoverflow.com/questions/{question-id}/{slug-made-from-question-title}
Run Code Online (Sandbox Code Playgroud)

所以基本上问题是使用question-id检索的.所以无论我给slug什么价值都是无关紧要的.

首先我想知道这种理解是否错误:)

我有一个URL

http://stackoverflow.com/questions/6291678/convert-input-string-to-a-clean-readable-and-browser-acceptable-route-data
Run Code Online (Sandbox Code Playgroud)

然后我像这样手动更换了slu ..

http://stackoverflow.com/questions/6291678/naveen
Run Code Online (Sandbox Code Playgroud)

但它变成了原来的slu .. Firebug向我展示了改变后的URL上的永久重定向301.如何实现此功能?

c# asp.net redirect http-status-code-301 url-redirection

11
推荐指数
2
解决办法
1074
查看次数

将所有请求从旧域重定向到新域

我希望从旧域迁移到新域.

我现在有我的旧域olddomain.com和新域newdomain.com指向相同的IP地址.

我有Apache服务器就地处理请求.

我怎么301 redirect都是我的

olddomain.com/*
Run Code Online (Sandbox Code Playgroud)

&

www.olddomain.com/*
Run Code Online (Sandbox Code Playgroud)

newdomain.com/*
Run Code Online (Sandbox Code Playgroud)

我可以获得需要添加的精确正则表达式或配置吗htaccess

我的newdomain.com和olddomain.com都是由来自同一IP的同一个apache服务,所以"/"重定向可能导致循环?所以寻找有效的方式

我试过了

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^localhost$ [OR]
    #  RewriteCond %{HTTP_HOST} ^www.olddomain.com$
    RewriteRule (.*)$ http://comp16/$1 [R=301,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

甚至尝试添加虚拟主机

RedirectMatch (.*)\.jpg$ http://comp17$1.jpg 
Run Code Online (Sandbox Code Playgroud)

但是当我在浏览器中将localhost命到我的计算机名称即comp16时,它不会重定向站点

apache .htaccess http-status-code-301

11
推荐指数
1
解决办法
3万
查看次数