Php .htaccess 301单页重定向

Php .htaccess 301单页重定向,php,.htaccess,seo,http-status-code-301,Php,.htaccess,Seo,Http Status Code 301,在重新设计网站后,我有几个页面需要重定向。所有内容都在同一个域中,只有一些内容被重新组织和/或重命名。它们的形式如下: /contact.php 现在是: /contact-us.php 使用.htaccess文件,我添加了这一行,这是我最推荐的一行: RedirectMatch 301 /contact.php /contact-us.php 这基本上是好的-它完成了任务-问题是,它还重定向: /team1/contact.php /不存在的文件夹/contact.php 有没有办法指定

在重新设计网站后,我有几个页面需要重定向。所有内容都在同一个域中,只有一些内容被重新组织和/或重命名。它们的形式如下:

/contact.php

现在是:

/contact-us.php

使用.htaccess文件,我添加了这一行,这是我最推荐的一行:

RedirectMatch 301 /contact.php /contact-us.php
这基本上是好的-它完成了任务-问题是,它还重定向:

  • /team1/contact.php
  • /不存在的文件夹/contact.php
有没有办法指定我只想重定向根目录中的contact.php?

这样就可以了

RedirectPermanent /contact.php /contact-us.php 
如果希望模板匹配和重定向URL,也可以使用。使用与URL路径匹配的正则表达式。您的正则表达式
/contact.php
仅表示包含
/contact.php
的任何URL路径,而不只是确切地表示
/contact.php
的任何URL路径。因此,将锚定用于字符串的开头和结尾(
^
$)

如果您更喜欢使用来解决问题,另一种选择是更基本的指令

它不使用模式匹配,因此更明确,更容易让其他人理解

i、 e


#将旧联系人页面重新指向新联系人页面:
重定向301/contact.phphttp://example.com/contact-us.php
查询字符串应该结转,因为单据上说:

将显示匹配URL路径之外的其他路径信息 附加到目标URL


使用redirectmatch规则,然后必须编写链接以使它们完全匹配是没有意义的。如果不包括,就不必排除!只需使用不匹配的重定向,然后正常使用链接

它会将您的商店页面重定向到您的联系人页面

    <IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteBase /
    Redirect 301 /storepage /contactpage
    </IfModule>

重新启动发动机
重写基/
重定向301/storepage/contactpage

我不明白为什么这样可以解决问题
RedirectPermanent…
Redirect301…
相同。Gumbo,RedirectPermanent将(URL路径)作为参数,RedirectMatch将(Regex URL)作为参数,因此当您使用不带(^)的RedirectMatch来分隔行的开头时,它不起作用。使用RedirectPermanent也比正则表达式快得多。@duckyflip:啊,对不起,你说得对。误读
重定向匹配
,仅使用
重定向
。但是
Redirect
只执行前缀检查。当我使用类似www.domain.com/contact.php?location=12的东西执行此操作时,它会重定向到www.domain.com/home/mike/public\u html/contact us.php?location=12,但仅当其中包含参数时。我通过在目标端输入完整的URL(带有http://)来修复它,因此:“重定向匹配301^/contact\.php$“。您可以使用任何url,而不是
/contact-us.php
。我需要重定向到一个IP地址嘿,太棒了,但我想做一些类似的事情,但我希望当有人试图从我的主机进入一个私有部分,然后重定向到另一个页面,如>private.php login.php,但在我用这个命令隐藏我的文件之前,需要所有拒绝,那么怎么做呢?只是一个说明,这只区分大小写,不区分大小写。。。我想,但是很久以前问过……简单更好。如果您不需要模式(regex),那么这将是最有效的语法。
<IfModule mod_alias.c>

#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php

</IfModule>
redirect 301 /contact.php /contact-us.php
    <IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteBase /
    Redirect 301 /storepage /contactpage
    </IfModule>