htaccess使用静态url屏蔽动态url
我正在尝试使用.htaccess做一些我不确定是否可以完成的事情 我做的第一件事是使用以下代码隐藏.php扩展:htaccess使用静态url屏蔽动态url,url,.htaccess,mod-rewrite,mask,Url,.htaccess,Mod Rewrite,Mask,我正在尝试使用.htaccess做一些我不确定是否可以完成的事情 我做的第一件事是使用以下代码隐藏.php扩展: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php 效果很好 现在我想做的是,但似乎无法理解的是: 当用户在浏览器地址栏中键入mywebsite.com/products?id=12345时,我希望
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
效果很好
现在我想做的是,但似乎无法理解的是:
当用户在浏览器地址栏中键入mywebsite.com/products?id=12345时,我希望服务器根据id提供正确的产品页面,但无论产品id是什么,都会在地址栏中将其显示为mywebsite.com/product
这可能吗?如果是,怎么做
谢谢这真的不可能做到。要更改地址栏,您需要发送一个实际的HTTP重定向。这意味着您将从浏览器获得一个新请求,其中包含您重定向到的内容,因此在第二个请求中,您将不再具有产品ID 有两种方法可以解决此问题: 使您的服务器有状态 将产品储存在饼干中 这两个都是坏主意
你为什么要这么做?您想确保您的用户不能为您的产品添加书签吗?这似乎对用户很不友好。我最终使用ajax和会话使过滤过程与用户无缝连接。我想我想用htacess文件做的是不可能的。无论如何谢谢你 是否要重定向到mywebsite.com/product?或者你只是想使用/products?id=12345?我不想重定向,我希望服务器以/products?id=12345的形式提供页面服务,但在浏览器的地址栏中以/products的形式显示url,而不管产品id如何。实际上,我简化了这个问题,目的是为了问我的问题。产品页面使用动态过滤系统,仅显示当前库存中的期权组合。结果页面看起来像products?color=red&category=456。我不希望人们能够将特定的搜索添加到书签中,以防期权组合不再有库存,他们会得到一个空的结果页面。如果htaccess无法做到这一点,我可能会将过滤系统更改为使用php会话来隐藏客户选择,而不是使用URL变量。