我希望在多个条件下使URL友好。
我得到了这个:www.example.com/?lang=en&page=test&model=mymodel
我希望:www.example.com/en/test/mymodel
但我也得到了这个(带有其他参数):
www.example.com/?lang=en&otherpage=othertest&othermodel=myothermodel
必须:
www.example.com/en/othertest/myothermodel
我如何为整个网站执行此操作?
答案 0 :(得分:0)
如果您要使用如下所示的友好网址:
www.example.com/<language>/<value1>/<value2>
然后Apache 赢得能够区分第一个和第二个非友好的&#34;您提到的网址:
www.example.com/?lang=en&page=test&model=mymodel
www.example.com/?lang=en&otherpage=othertest&othermodel=myothermodel
这是因为参数名称(第一个网址中的page
和model
,第二个网址中的otherpage
和othermodel
)不存在,并且可以&#39;可以从友好的URL中猜到。
可能的解决方法取决于您拥有的场景数量,即您要处理的参数数量。
E.g。如果你只有几个场景,你可以在友好的URL模式中添加一个部分,告诉Apache 使用哪个参数名称,如下所示:
www.example.com/<language>/<parameter_set>/<value1>/<value2>
然后,告诉Apache使用第一个参数集,如果<parameter_set>
等于例如1,第二组如果它等于2,依此类推。
示例重写规则集可以是:
RewriteEngine On
RewriteRule ^([\w]+)/1/([\w]+)/([\w]+)$ ./?lang=$1&page=$2&model=$3
RewriteRule ^([\w]+)/2/([\w]+)/([\w]+)$ ./?lang=$1&otherpage=$2&othermodel=$3
请注意,1
和2
完全是任意的(它们可以是任何其他字符串)。
当然,the official docs可以提供帮助。