![](/img/trans.png)
[英]Apache mod_rewrite not redirecting to PHP, but redirecting to other URLs
[英]Redirecting URLs after mod_rewrite?
我试图了解mod_rewrite的工作方式。 例如,如果我有一个网址,例如:
example.com/user.php?id=123
并使用mod_rewrite可以创建如下网址:
example.com/user/123
现在可以,但是在我的应用程序的其他位置,我已经使用旧格式链接到用户页面,例如:
<a href="user.php?id=123">123</a>
现在是否意味着我需要手动更改所有这些链接,并且应该根据新格式进行链接? 例如:
<a href="user/123">123</a>
还是应该使用mod_rewrite完成? 我没有使用任何PHP框架。
从长远来看,是的,您将不得不对其进行更改,但您也可以将其重定向:
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友好链接,那将是最好的选择,以避免每次用户访问或浏览您的网站时都进行额外的重定向。
在数据库中找到所有链接并替换
UPDATE `myTable`
SET myCol = REPLACE(myCol, '<a href="user.php?id=', '<a href="user/')
WHERE keyCol = testKey;
做整个表,删除WHERE
子句
我认为这行得通,如今我不怎么使用sql了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.