【问题标题】:rewrite rules on EC2 server conundrum在 EC2 服务器难题上重写规则
【发布时间】:2013-08-12 16:15:54
【问题描述】:

我是 Apache 上的 RewriteEngine 的新手,想制作一些对 SEO 友好的网址。我正在将数据发送到 url 中的服务器,即 user.php?id=37&activ=2 等。

我已更改我的 .htaccess 文件以包含以下内容:

ErrorDocument 404 /404.php

Options +FollowSymLinks

RewriteEngine On
RewriteRule ^id=([0-9]+)$ user.php?id=$1&activ=2

现在一切正常,即我可以通过键入以下内容导航到相应的页面:

root.com/id=35

并获得正确的页面。但是,当我单击网站上的内部链接以获取相同的页面时,我会得到与旧 user.php?id=35&activ=2 等相同的 url。

我怎样才能使内部链接显示为“重写”并且对 SEO 友好?

【问题讨论】:

    标签: apache .htaccess mod-rewrite hyperlink


    【解决方案1】:

    规则:

    RewriteRule ^id=([0-9]+)$ user.php?id=$1&activ=2
    

    获取传入请求 URI /id=123 并在内部将其重写为 /user.php?id=123&activ=2,就像您想要的那样。 仅此而已。它不会神奇地改变动态内容,因此<a>hrefs 内的链接被转换为某种新模式,它不会神奇地改变浏览器位置栏中的内容。它只做一件事,就是在内部将一个 URI 重写为另一个。

    您需要更改所有内容,使链接不再看起来像/user.php?id=123&activ=2。在这方面,mod_rewrite 绝对无能为力。除非您更改此设置,否则人们仍然可以将鼠标悬停在您的链接上并看到旧网址。

    如果您需要将外部链接从一种形式更改为另一种形式,则可以使用:

    RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /user\.php\?id=([0-9]+)&activ=2
    RewriteRule ^ /id=%2? [L,R=301]
    

    这会在外部将带有查询字符串的 URI 重定向到没有的。

    【讨论】:

    • 谢谢乔恩——这正是我想做的——我想保持我的内部链接不变,但我想更改用户在外部看到的 url,这样他们就不需要查看所有 ?id=37 等。
    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 2010-09-25
    • 2011-09-11
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多