我是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友好?
答案 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。