Php 用.htaccess重写url中的一个单词

Php 用.htaccess重写url中的一个单词,php,.htaccess,mod-rewrite,rewrite,friendly-url,Php,.htaccess,Mod Rewrite,Rewrite,Friendly Url,我有这个网址: www.mysite.it/index.php?page=search&sOrder=dt\u pub\u date&iOrderType=desc&sPattern=MOTO&sCity=Pisa&sPriceMin=&sPriceMax= 这是一个由搜索按钮(比萨城的MOTO)生成的url 是否可以重写单词?page=search,sOrder,dt\u pub\u date,iOrderType,sPatternsCity,sPriceMin,sPriceMax,以便url

我有这个网址:

www.mysite.it/index.php?page=search&sOrder=dt\u pub\u date&iOrderType=desc&sPattern=MOTO&sCity=Pisa&sPriceMin=&sPriceMax=

这是一个由搜索按钮(比萨城的MOTO)生成的url

是否可以重写单词
?page=search
sOrder
dt\u pub\u date
iOrderType
sPattern
sCity
sPriceMin
sPriceMax
,以便url变成:

www.mysite.it/toscana/pisa/cerca=MOTO


还是更方便用户?

通过
httpd.conf
启用
mod\u rewrite
.htaccess
,然后将此代码放入
文档根目录下.htaccess
文件:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^page=search&sOrder=dt_pub_date&iOrderType=[^&]*&sPattern=([^&]*)&sCity=([^&]*)&sPriceMin=[^&]*&sPriceMax
RewriteRule ^index\.php$ /toscana/%2/cerca=%1? [R=301,L,NE,NC]

我会提出以下几点建议。从捕获环境中所需的零件开始:

# find sCity component, write it to environment variable
RewriteRule ([?&]sCity=([^&?]+)) $1 [E=sCity:$2]

# find sPattern component, write it to environment variable
RewriteRule ([?&]sPattern=([^&?]+)) $1 [E=sPattern:$2]
然后使用从捕获中创建的环境变量进行重写

# do substitution from environment variables
RewriteRule ^(.*?)/.*$ $1/%{ENV:sCity}/cerca=%{ENV:sPattern}

注意:未经测试-您可以尝试一下,看看它是否能激励您或对您来说是否成功。否则就照我做的做,继续阅读。

托斯卡纳从哪里来?在您的源URL中没有提到它。当然,这假设参数在URL中始终以相同的顺序提供。工作,但搜索功能没有出现,URL是正确的,但内容是所有产品,而不仅仅是搜索的模式(示例中为MOTO)还有其他解决方案吗?我很节俭,很抱歉我的英语不好,我希望你能同样理解重定向后你在浏览器中看到的URL是什么?托斯卡纳是意大利的一个地区,因此我将用%2更改htaccess字符串中的单词,如示例所示,但不能同等工作。嗯,好的,在重定向发生之前,您输入的原始URL是什么?