为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
料青山看我应如是 2022-09-17 21:40:59
我甚至不知道我怎么能给这个问题起个标题,但问题来了:我在这个有服务的项目上使用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很抱歉这个问题很长,但任何帮助和想法来处理这个问题将不胜感激。谢谢。
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

我通过将下一个查询字符串附加到我的URL来修复我的问题。我不知道mod_rewrite的旗帜。QSA

这是我对服务页面的原始规则:

RewriteRule ^services/(.*?)/?$ services.php?s=$1 [L]

我用以下代码替换了它:

RewriteRule ^services/(.*?)/?$ services.php?s=$1&lang=$2 [L,QSA]

我不知道它是否100%可靠,但它似乎完美地满足了我的需求,即使做了一些测试。

(感谢约瑟夫·西布勒-复职莫妮卡指导我回答一个有用的问题。


查看完整回答
反对 回复 2022-09-17
  • 1 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信