Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用mod rewrite将位置作为子目录添加到url?_Url_Mod Rewrite_Subdirectory - Fatal编程技术网

使用mod rewrite将位置作为子目录添加到url?

使用mod rewrite将位置作为子目录添加到url?,url,mod-rewrite,subdirectory,Url,Mod Rewrite,Subdirectory,我正在处理根据位置显示项目的项目。用户第一次必须选择位置才能搜索项目。此位置保存为cookie,以供将来参考。url如下所示: www.example.com/newyork 如果用户正在查看纽约存在的项目,则该项目的url为: www.example.com/item/iphone 上面的url工作正常,但有一个问题。如果通过电子邮件将上述url转发给第一次使用此url的用户,则此项目不存在,因为未选择位置。我可以将用户转发到不同的页面以选择位置,然后查找该项目,但这对用户来说很麻烦。

我正在处理根据位置显示项目的项目。用户第一次必须选择位置才能搜索项目。此位置保存为cookie,以供将来参考。url如下所示:

 www.example.com/newyork
如果用户正在查看纽约存在的项目,则该项目的url为:

 www.example.com/item/iphone
上面的url工作正常,但有一个问题。如果通过电子邮件将上述url转发给第一次使用此url的用户,则此项目不存在,因为未选择位置。我可以将用户转发到不同的页面以选择位置,然后查找该项目,但这对用户来说很麻烦。所以,我想把上面的url改成

 www.example.com/newyork/item/iphone

这样我就可以利用纽约作为地点。如何将不存在的子目录添加到url?这是用PHP还是用mod_rewrite完成的?

您可以尝试重定向,但您必须仔细设计用于匹配
/newyork/item/iphone
的正则表达式。然后,您可以将
newyork
部分分组,设置cookie并使用
CO
标志重定向浏览器

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([^/]+)/item/([^/]+)$ /item/$2 [L,R,CO=location:$1:example.com:/]
这将接受像
http://www.example.com/pittsburgh/item/iphone
并提取匹兹堡
部分,将其存储在名为
location
的cookie中(域=example.com,路径=/),然后重定向浏览器,使浏览器存储cookie并使浏览器转到
http://www.example.com/item/iphone

有关语法的详细信息,请参见:

[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly] 

快速提问。没有mod_重写规则的acutal链接是
www.example.com/item.php/itemid=phone
。是否可以将此链接重写到
www.example.com/newyork/item.php/itemid=phone


您可以将
www.example.com/newyork/item/iphone
重写为
www.example.com/item/iphone
,但是“newyork”部分会发生什么?你说应该放在饼干里?嗯,“纽约”部分什么也没发生,只是放在饼干里供将来参考。我尝试这样做的主要原因是为了更好地提供电子邮件链接或转发。如果该链接仅提供[link](www.example.com/item/iphone),则无法判断用户位置(除非我将用户转发到其他页面以选择位置)。然而,如果链接已经有location[link](www.example.com/newyork/item/iphone),那么我们可以为第一次使用该链接的用户询问位置。这种情况主要适用于转发或电子邮件链接。希望这是有意义的。但是如果有人通过电子邮件访问
www.example.com/newyork/item/iphone
链接,然后将其重写,以便
/item/iphone
得到服务,
/item/iphone
如何知道位置,因为他们单击了电子邮件中的链接,所以还没有cookie。你是对的。你能提出解决办法吗。所有我试图创建的是添加位置的链接,这样我就可以知道确切的项目位于或列出。谢谢。我会试试看。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([^/]+)/item.php/itemid=(.+)$ /item.php/itemid=$2 [L,R,CO=location:$1:example.com:/]