0

我是 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

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

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

4

1 回答 1

0

规则:

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

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

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

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

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

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

于 2013-08-12T18:19:26.917 回答