重写EC2服务器难题的规则

时间:2013-08-12 16:15:55

标签: apache .htaccess mod-rewrite hyperlink

我是Apache的RewriteEngine的新手,想要制作一些SEO友好的网址。我正在通过网址向服务器发送数据,即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友好?

1 个答案:

答案 0 :(得分:0)

规则:

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与查询字符串重定向到没有的URI。