【问题标题】:How to stop duplicating subdirectories?如何停止复制子目录?
【发布时间】:2020-08-25 08:42:14
【问题描述】:

我正在尝试解决这个问题,已经 1 周了,仍在尝试寻找解决方案。

我的网站有 5 种语言,我在 htaccess 中使用以下代码将 ?lang=xx 重定向到 /xx 等假文件夹

代码是;

RewriteRule ^ru/(.*) $1\?lang=ru [L,N]

问题是,当我点击页脚链接时,我的子目录重复了。

例如;我的一些页脚链接是

server/usa 
server/canada
dc/co-location

当我使用英文时(没有假目录,它是根文件夹。)没有问题。

但是当我将语言更改为cn时,它会保留以前的文件夹;

点击进入中国

example.com/cn

点击服务器/美国

example.com/cn/server/usa

点击服务器/加拿大

example.com/cn/server/server/canada

点击到 dc/co-location

example.com/cn/server/server/dc/co-location

所以,当您点击其他链接时,它会保留上一个文件夹。

我不能使用 ../server/canada 之类的链接,因为当我这样做时,它会取消语言。

我尝试使用以下代码来完成,但需要为每种语言和每个文件夹编写它,如果我可以用一行或几行代码来完成它会很棒

RewriteRule ^cn/server/server/(.*)$ /cn/server/$1 [R=301,L,N]

我的 htaccess 知识非常有限,我找不到办法。

【问题讨论】:

    标签: php html .htaccess web


    【解决方案1】:

    在页脚的链接前面添加一个斜杠:

    /server/usa 
    /server/canada
    /dc/co-location
    

    这可确保链接替换当前位于 URL 的 example.org 部分之后的内容,而不是添加到它之后。

    例如,在页面example.com/page1 上,链接page2 会将您发送至example.com/page1/page2,而链接/page2 会将您发送至example.com/page2

    这应该足以解决你的问题,不需要任何重写规则。

    【讨论】:

    • 您好,感谢您的帮助。我已经尝试过这样做。当我在链接前添加斜杠时,它会取消该语言的假目录。例如,当我们在 example.com/ru 中执行此操作时,它会删除 /cn 并将连接发送到 example.com/page1/page2。但它必须是 example.com/ru/page1/page2
    猜你喜欢
    • 1970-01-01
    • 2018-04-20
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多