如何使用htaccess隐藏客户端的部分URL?

时间:2016-04-29 19:43:52

标签: apache .htaccess mod-rewrite

我正在使用在Apache服务器上运行的网站。 PHP工厂制作并获取如下所示的URL:

site.com/page/view/[id]/[vanity-url]

但是,客户端希望隐藏部分URL,因此在浏览器中显示为:

site.com/[vanity-url]

服务器仍需要查看完整的网址。

经过数小时的搜索,我尝试了各种RewriteRules,而我似乎最接近的是:

RewriteRule ^page/view/(.*)/(.*)$ /$2 [R,L]

......但这似乎没有做任何事情。我确信我的.htacces正在运作。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

不幸的是,这是不可能的。让我解释一下原因:

您声明服务器需要查看完整的URL。具体来说,这包括id段,我相信你的框架需要(如果服务器只需要看到虚荣段,它就不需要它)。您提供的代码完整的URL重定向到虚荣URL,从而使完整的URL对服务器不可见,以便下次请求。

因此,导航到/page/view/2/about-us重定向/about-us,地址栏会发生变化以反映出来。这会导致 new 请求被发送到服务器,仅包含/about-us虚荣URL。

因此,您需要将虚荣URL重写回到完整的URL(不重定向,以便/about-us按原样保留在地址栏中),但是你将无法做到这一点,因为虚荣URL不包含id段,这似乎是框架提供正确响应的要求。请记住,Apache无法猜出该特定虚荣URL的ID。