我正在使用在Apache服务器上运行的网站。 PHP工厂制作并获取如下所示的URL:
site.com/page/view/[id]/[vanity-url]
但是,客户端希望隐藏部分URL,因此在浏览器中显示为:
site.com/[vanity-url]
服务器仍需要查看完整的网址。
经过数小时的搜索,我尝试了各种RewriteRules,而我似乎最接近的是:
RewriteRule ^page/view/(.*)/(.*)$ /$2 [R,L]
......但这似乎没有做任何事情。我确信我的.htacces正在运作。
我做错了什么?
答案 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。