gpt4 book ai didi

apache - 了解重定向和重写.htaccess之间的区别

转载 作者:行者123 更新时间:2023-12-03 10:59:32 25 4
gpt4 key购买 nike

我想了解使用.htaccess重定向和重写URL之间的区别。
所以这是一个例子:假设我有一个类似于www.abc.com/ index.php?page=product_types&cat=88的链接(称其为“原始” URL)

但是,当用户键入abc.com/shoes(我们将其称为“所需” URL)时,他们需要查看上面链接的内容。为此,我将这样做:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)shoes(.*)$ index.php?page=product_types&cat=88

这段代码没有错,并且可以解决问题。但是,如果我在地址栏中输入原始网址,则会显示内容,但网址不会更改。所以它仍然是 www.abc.com/index.php?page=product_types&cat=88
但是,如果我想输入所需的URL( /shoes)显示在地址栏中,该怎么办?如何使用.htaccess做到这一点?我会遇到潜在的麻烦吗?

最佳答案

一些解释可以在这里找到:https://stackoverflow.com/a/11711948/851273

要点是,重写仅发生在服务器上,客户端(浏览器)对此视而不见。浏览器发送请求并获取内容,对于服务于请求的服务器上发生的事情来说,这并不明智。

重定向是服务器对请求的响应,它告诉客户端(浏览器)提交新请求。浏览器要求一个URL,该URL是位置栏中的URL,服务器获取该请求,以重定向进行响应,浏览器获取响应并将URL加载到服务器的响应中。位置栏中的URL现在是新URL,浏览器发送了对新URL的请求。

简单地在服务器上进行内部重写绝对不会对URL产生任何影响。如果google或reddit或任何站点都具有www.abc.com/index.php?page=product_types&cat=88的链接,则您的内部服务器重写规则绝对不会对此执行任何操作,也不会对单击该链接的任何人或由于任何原因碰巧请求该URL的任何客户端执行任何操作。重写规则所做的全部工作是在服务器内部内部将包含shoes的内容更改为/index.php?page=product_types&cat=88

如果您希望这样做,那么将使用所有查询字符串来请求index.php页面,则可以告诉客户端(浏览器)重定向到外观更好的URL。您需要小心,因为重写规则会循环,并且您的重定向将在内部进行重写,这将导致重定向,在内部进行重写等。导致循环并会引发500服务器错误。因此,您可以专门匹配请求本身:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=product_types&cat=88
RewriteRule ^/?index.php$ /shoes [L,R=301]

仅应使用它来使野外链接指向正确的位置。 您必须确保您的内容正在生成正确的链接。这意味着您网站上的所有内容都使用 /shoes链接而不是 /index.php?page=product_types&cat=88链接。

关于apache - 了解重定向和重写.htaccess之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12399505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com