【问题标题】:Cleaning up URL's for an existing Website清理现有网站的 URL
【发布时间】:2014-09-23 09:24:37
【问题描述】:

快速提问,有没有办法清理现有网站的 URL?我的意思是说我有一个像这样http://www.webawwards.com/website?id=320 的现有链接,但我想让它成为http://www.webawwards.com/terna

有没有办法可以清理该网址,但如果有任何指向当前网址的现有链接,该链接仍会通过?

你能指导我正确的方式吗?谢谢

【问题讨论】:

    标签: url url-rewriting clean-urls


    【解决方案1】:

    如果您想将 URL 硬编码到您的 .htaccess 文件中,您可以简单地设置静态重定向:

    <IfModule mod_rewrite.c>
        RewriteEngine on
    
        RewriteCond %{QUERY_STRING}  ^id=320(.*)$
        RewriteRule /website$ /terna [L,NC]
    
        RewriteCond %{QUERY_STRING}  ^id=321(.*)$
        RewriteRule /website$ /somewhere-else [L,NC]
    </IfModule>
    

    但是,如果您想让它更灵活(也许让人们更改自己的重定向或类似的方式),您需要将其存储在数据库中(redirects 表,website_id, redirect_url 的列)然后当有人查询, 这样做(伪代码):

    if (isset( queryString['id'] ))
        query( SELECT redirect_url FROM redirects WHERE website_id = queryString['id'] )
        redirectTo( redirect_url );
        exit
    

    在 PHP 中,实际的重定向将使用header('Location: ' . $redirect); 完成,查询部分应该很简单。

    【讨论】:

    • 如果我像在您的示例中那样使用 .htaccess 但页面是动态生成的?
    • 您可以等到页面生成后再手动添加 htaccess 规则,也可以使用动态选项,例如 PHP 替代方案。 htaccess 不能做动态重定向,所以你需要对每一个进行硬编码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2011-08-01
    • 2023-03-30
    • 1970-01-01
    • 2011-12-28
    • 2010-10-07
    相关资源
    最近更新 更多