【问题标题】:301 redirect ugly URLs to clean URLs301 将丑陋的 URL 重定向到干净的 URL
【发布时间】:2013-03-21 09:47:39
【问题描述】:

你好,我这里有问题。我正在寻找解决方案,但没有找到解决方案... 所以我的 htacess 文件

RewriteEngine On


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]

它将我的网址更改为漂亮的网址,例如 www.example.com/index.php?page=xxx 到 www.example.com/xxx 所以它可以工作,但问题是我可以从这两个 url 访问同一个页面。所以它就像来自谷歌不同网址的相同内容。如何使旧链接的 301 重定向到新链接?

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    在RewriteEngine On 行下方,添加以下内容:

    RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /index\.php\?page=([^&\ ]+)&?([^\ ]*)
    RewriteRule ^ /%2?%3 [L,R=301]
    

    这会检查 /index.php 的实际请求(而不是请求 URI)并提取 page 参数的值,然后将浏览器重定向到参数值的 URI(附加任何剩余的查询字符串)。这会将浏览器的 URL 地址栏中的内容更改为没有 /index.php 的 URL。

    【讨论】:

    • 嗨,这确实有效,谢谢。但是如果页面指向子类别,例如 www.example.com/yyyy/xxx 。 yu 代码仅重定向到 www.example.com/xxx 。是否可以显示父类别?因为现在来自 www.example.com/xxx 和 www.example.com/yyyy/xxx 的同一页面
    • @user2132032 您必须将“yyyy”位添加到条件和重写规则的目标中。所以在index\.php和%2?%3前面添加任何“yyyy”
    • 我有点困惑,例如 url:example.com/commercial-flooring/vinyl/homogeneos-vinyl,当我点击 example.com/index.php?page=homogeneos-vinyl 时,我被重定向到 example.com/homogeneos-vinyl 有很多类别,所以我确实让所有类别都写入 htaccess 文件?
    猜你喜欢
    • 1970-01-01
    • 2012-02-29
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 2016-02-22
    • 2013-07-04
    相关资源
    最近更新 更多