【发布时间】:2021-06-17 15:19:10
【问题描述】:
有人可以帮我解决 htaccess 重写网址吗?
- 我需要将 ?lang=en 转换为 /en
- 始终显示 url 中使用的语言
- 当有人来到 example.com 自动 301 重定向他们 以 example.com/en 为主要语言。
- 当用户选择另一种语言留在同一页面上时,例如 example.com/en/contact.php
我在网站 en、de、hr 上共有三种语言。
我的代码的问题是,当我转到 example.com/contact 并选择一种语言时,它会将我带回主页 example.com/en。如果我手动输入 example.com/en/contact 它可以工作。
如果我在 example.com/en/contact 并选择另一种语言,例如/de url 更改为 example.com/en/de 并出现 404 错误。
我当前的 htaccess 代码如下所示
# Convert ?lang=en in /en
RewriteRule ^([a-z]{2})/?$ ?lang=$1 [QSA,L]
RewriteRule ^([bs|en|de]{2})/(.*)$ $2?lang=$1&%{QUERY_STRING} [L,QSA]
# Remove trailing slash from URL
RewriteCond %{REQUEST_URI} /(.+)/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ https://example.com/%1 [R=301,L]
# Remove php extension in URL
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
【问题讨论】:
标签: apache .htaccess mod-rewrite url-rewriting