【问题标题】:Redirect site to 410 except one URL将站点重定向到 410,但一个 URL 除外
【发布时间】:2017-07-23 04:05:15
【问题描述】:

我在 PHP codeigniter 中构建了网站,其中包含如下各种 URL:

    www.mysiteexample.com
    www.mysiteexample.com/mobile
    www.mysiteexample.com/storage
    www.mysiteexample.com/stack
    www.mysiteexample.com/apple and so on..

现在我想将所有 URL 重定向到 410 消失,包括主页,但除了 www.mysiteexample.com/stack 我可以通过为每个 URL 添加单独的规则来做到这一点,如下所示:

RewriteRule ^/?mobile- [L,R=410]
RewriteRule ^/?storage- [L,R=410]
RewriteRule ^/?apple - [L,R=410]

但我想要优化的解决方案,因为我有超过 50 个 URL,我想重定向到 410,并且使用上述解决方案会增加文件大小和 .htaccess 的 LOC

编辑: 我在 routes.php 中有以下代码

$route['stack(.*)'] = 'stack_center/index';

【问题讨论】:

    标签: .htaccess codeigniter redirect mod-rewrite


    【解决方案1】:

    也试试下面的规则,暂时没试过。

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !stack
    RewriteRule ^ - [L,R=410]
    

    【讨论】:

    • 使用它会为所有站点显示 410,但对于堆栈则显示 404 错误。
    • 堆栈是文件/目录,或者是传递给 index.php 的值
    • 堆栈不是文件/目录,也不是任何值。这是一个 URL 结构或门页。请查看我的编辑
    • 您必须为此在路由文件中编写代码,因为实际上每个请求都会传输到 index.php,apache 无法对您的情况做任何事情。
    【解决方案2】:

    您可以使用以下重定向

    RedirectMatch 410 ^/((?!stack).*)$
    

    【讨论】:

    • 使用它会为所有站点显示 410,但对于堆栈则显示 404 错误。
    • 你的文件系统中是否存在 /stack?
    • 不,文件系统中不存在。这是一个 URL 结构或门页。请查看我的编辑
    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 2014-05-04
    • 2011-03-27
    • 2017-05-13
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2020-04-22
    相关资源
    最近更新 更多