【发布时间】:2018-10-07 22:13:33
【问题描述】:
我很难找到我正在搜索的内容的具体答案。 我主要做的是制作漂亮的网址。在大多数情况下,当我知道 url 必须包含的变量数量时,我能够使其工作,例如:
原网址:
index.php?lang=en&show=contact-us
htaccess:
RewriteRule ^([a-z]+)/([a-z-]+)$ index.php?lang=$1&show=$2 [NC,L]
新网址:
/en/contact-us
对于“已知数量的变量”,我有多个作为这个,我将向您展示另一个示例:
原网址:
index.php?lang=en&show=for-rent-details&object=8500479
htacces:
RewriteRule ^([a-z]+)/for-rent/([0-9]+)/([0-9a-z-]+)$ index.php?lang=$1&show=for-rent-details&id=$2&name=$3 [NC]
新网址:
/en/for-rent/8500479/rocha-tower-14e
但现在的问题是用户何时进行搜索。这意味着 url 将根据客户将选择的项目数量组成。默认情况下有 5 个变量:
原网址:
index.php?lang=en&show=filter&beachDistance=500&roomQty=2&sortRent=asc
htaccess:
RewriteRule ^([a-z]+)/([a-z-]+)/([0-9]+)/([0-9]+)/([a-z]+)$ index.php?lang=$1&show=$2&beachDistance=$3&roomQty=$4&sortRent=$5 [NC]
新网址:
/en/filter/500/2/asc
这是搜索功能的“默认”网址格式。如果用户未选择任何内容,则这些是默认变量和发送的相应值。但是如果用户想要选择一些额外的信息(城市或兴趣点),那么它们会出现在这样的后面:
工作网址:
index.php?lang=en&show=filter&poi-1=1&poi-3=3&beachDistance=500&roomQty=2&sortRent=asc
我希望它是:
/en/filter/1/3/500/2/asc
而另一个搜索可能有:
/en/filter/1/3/44/13/90/500/2/asc
也许还有一个带有以下变量的:
/en/filter/1/3/9/2/500/2/asc
所以这就是我所说的未知“变量数量”的意思,htaccess 不会确切知道数量,但无论如何我希望它仍然重写 url。我已经阅读了有关 QSA 标志规则的信息,但我有点不确定如何实施它。
【问题讨论】:
标签: php .htaccess url-rewriting