我正在尝试理解mod_rewrite是如何工作的。例如,如果我有一个像:
这样的网址example.com/user.php?id=123
使用mod_rewrite我可以创建URL Like:
example.com/user/123
现在没问题,但在我的应用程序的其他位置,我已使用旧格式链接到用户页面,例如:
<a href="user.php?id=123">123</a>
现在是否意味着我需要手动更改所有这些链接,并应根据新格式进行链接?例如:
<a href="user/123">123</a>
或者是否应该使用mod_rewrite? 我没有使用任何PHP框架。
答案 0 :(得分:2)
从长远来看,您必须更改它,但您也可以重定向:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
# Externally redirect /user.php?id=123 to /user/123
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(user)\.php\?id=([^&\s]+) [NC]
RewriteRule ^ /%1/%2? [R=301,L]
# Internally forward /user/123 to /user.php?id=123
RewriteRule ^user/([0-9]+)/?$ /user.php?id=$1 [NC,L]
外部重定向是更改浏览器上的URL的内部重定向,内部是不更改URL但显示其他相关位置内容的重定向。
虽然上述内容会将用户重定向:
example.com/user.php?id=123
要
example.com/user/123
如果您更改链接以使用SEO友好链接以避免在用户访问或浏览您的网站时的额外重定向,那将是最好的。
答案 1 :(得分:-2)
找到db中的所有链接并替换
UPDATE `myTable`
SET myCol = REPLACE(myCol, '<a href="user.php?id=', '<a href="user/')
WHERE keyCol = testKey;
执行整个表格,删除WHERE
子句
我认为这样可行,我现在不玩sql很多