【问题标题】:.htaccess - move site from .html to .php, but exclude a folder.htaccess - 将站点从 .html 移动到 .php,但排除文件夹
【发布时间】:2011-06-01 23:12:09
【问题描述】:

我有一个新站点,并将旧版本的站点放在 /old 文件夹中。

新站点的页面名称与旧站点相同,只是它们现在都具有 .php 扩展名。

我有以下规则让 SEO 将所有 .html 文件定向到 .php

RedirectMatch 301 (.*)\.html$ http://www.mysite.com$1.php

但我仍然需要能够访问 /old 文件夹中的所有内容 - 重定向显然也将这里的文件重定向(例如 mysite.com/old/mypage.html 将转到 mysite.com/old/mypage .php - 我需要 .html 版本)

我试图自己找出答案,但我不确定所有 RedirectXYZ 命令。

有什么想法吗?

【问题讨论】:

    标签: php regex apache .htaccess


    【解决方案1】:

    您可以使用negative lookahead 实现此目的:

    RedirectMatch 301 ^(?!/old)(.*)\.html$ http://www.mysite.com$1.php
    

    (?!/old) 拒绝在此位置包含字符串 /old 的匹配项。我们使用^ 将其限制在要匹配的字符串的开头。

    【讨论】:

    • 酷,谢谢。起初它不起作用,所以我在 url 中添加了 $1 只是为了查看它存储的内容,并注意到实际的页面名称在 $1 中。所以将 $2 替换为 $1
    • @Josh 好的,这意味着 mod_rewrite 没有将组分配给(?!/old)。修正我的答案。
    猜你喜欢
    • 2021-04-27
    • 2017-04-07
    • 2012-11-30
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2011-03-25
    相关资源
    最近更新 更多