Apache 重写EC2服务器上的规则难题

Apache 重写EC2服务器上的规则难题,apache,.htaccess,mod-rewrite,hyperlink,Apache,.htaccess,Mod Rewrite,Hyperlink,我是Apache上RewriteEngine的新手,希望创建一些SEO友好的URL。我正在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 现在一切正常,即我可以通过键入以下内

我是Apache上RewriteEngine的新手,希望创建一些SEO友好的URL。我正在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。php?id=35&activ=2等等

如何使内部链接显示为“重写”且SEO友好?

规则:

RewriteRule ^id=([0-9]+)$ user.php?id=$1&activ=2
获取传入请求URI
/id=123
,并在内部将其重写为
/user.php?id=123&activ=2
,就像您想要的那样这就是它所做的一切。它不会神奇地改变动态内容,从而将
hrefs中的链接转换为某种新模式,也不会神奇地改变浏览器位置栏中的内容。它只做一件事,即在内部将一个URI重写为另一个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重定向到不带查询字符串的URI

谢谢Jon-这正是我想做的-我想保持我的内部链接不变,但我想更改用户在外部看到的url,这样他们就不需要看到所有的?id=37等等。