如何使用 .htaccess 区分带参数和不带参数的网址

我甚至不知道我怎么能给这个问题起个标题,但问题来了:

我在这个有服务的项目上使用seo友好的网址。服务链接看起来像; 他们被翻译成;另一方面,页面在其网址末尾没有.php扩展名,例如:或。.com/services/service-title-6.com/services.php?s=service-title-6.com/services.com/about-us

实际问题出现在我处理此网站的多种显示语言之间的切换时。我刚刚使用了一个调用的get参数,我可以将其传递到任何页面,因为我在每个页面上都有一个php文件来处理它以及其他东西。在我的导航栏上,语言更改按钮链接是动态创建的,因此用户不必离开当前页面即可更改网站的语言。因此,如果您正在查看“关于”页面,则链接是:切换到英语。这是在 php 中生成的,类似于 .lang.com/about-us?lang=en$current_url . "?lang=en"

但是,当我查看带有服务等参数的页面时,链接会被 .htaccess 转换为类似以下内容的内容: 。如您所知,第二个问号将作为参数被忽略并且不会传递。我需要使用 & 符号而不是问号。但是,当我只是在常规页面上执行此操作时,我不能单独使用 & 符号,因为它将被翻译成:..com/services.php?s=service-title-6?lang=en.com/about-us.php&lang=en

很抱歉这个问题很长,但任何帮助和想法来处理这个问题将不胜感激。谢谢。


料青山看我应如是
浏览 78回答 1
1回答

繁星点点滴滴

我通过将下一个查询字符串附加到我的URL来修复我的问题。我不知道mod_rewrite的旗帜。QSA这是我对服务页面的原始规则:RewriteRule ^services/(.*?)/?$ services.php?s=$1 [L]我用以下代码替换了它:RewriteRule ^services/(.*?)/?$ services.php?s=$1&lang=$2 [L,QSA]我不知道它是否100%可靠,但它似乎完美地满足了我的需求,即使做了一些测试。(感谢约瑟夫·西布勒-复职莫妮卡指导我回答一个有用的问题。
打开App,查看更多内容
随时随地看视频慕课网APP