0

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

 www.example.com/newyork

如果用户正在查看纽约存在的项目,则该项目的 url 是:

 www.example.com/item/iphone

上面的网址工作正常,但有一个问题。如果上面的 url 是通过邮件转发给第一次使用的用户,这个项目不存在,因为没有选择位置。我可以将用户转发到不同的页面以选择位置,然后查找该项目,但这对用户来说很麻烦。所以,我想把上面的网址改成

 www.example.com/newyork/item/iphone

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

4

1 回答 1

0

您可以尝试进行重定向,但您必须仔细制作用于匹配的正则表达式/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并提取pittsburgh部分,将其存储在一个名为location(域=example.com 和路径=/)的 cookie 中,然后重定向浏览器,以便浏览器存储 cookie 并使浏览器转到http://www.example.com/item/iphone

有关语法的详细信息,请参阅标志的文档:CO

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

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

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:/]
于 2012-09-19T23:29:08.990 回答