【问题标题】:.htaccess redirect no-parameter to default-parameter.htaccess 将无参数重定向到默认参数
【发布时间】:2014-01-21 19:17:06
【问题描述】:

我将以下重写规则用于语言指示clean url目的。

RewriteEngine On
RewriteRule ^([a-zA-Z0-9\-]+)$/([a-zA-Z0-9\-]+)$ index.php?lang=$1&page=$2 [L]

当没有给出语言参数时,网站将无法正确显示。因此,当用户请求 www.mydomain.com/products 而不是 www.mydomain.com/en/products 时,该网站将发挥作用。

解决方案是一个 .htaccess 配置,当没有给出语言参数时(如 www.mydomain.com)。当用户请求 www.mydomain.com/ 时,如何执行外部 .htaccess 重定向到 www.mydomain.com/en/

【问题讨论】:

  • “当没有给出语言参数时,网站将无法正确显示。” – 为什么?这是什么粗心大意的脚本,它本身无法确定这样一个参数的默认值?
  • 一个初学者写的

标签: .htaccess mod-rewrite redirect


【解决方案1】:
RewriteEngine on
RewriteBase /

# lang & page
RewriteRule ^([a-z]{2})/([a-zA-Z0-9-]+)$ index.php?lang=$1&page=$2 [L]

# Only lang
RewriteRule ^([a-z]{2})$ index.php?lang=$1 [L]

# no lang -> default "en" lang
RewriteRule ^$ en [R=301,L]

这样,你必须在你的 php 中检查 lang。

或者您可以在 htaccess 中使用 (en|fr|es) 代替 ([a-z]{2})

【讨论】:

  • 成功了!我的网站实际上存储在一个子文件夹中,所以我不得不将 RewriteBase / 更改为 RewriteBase /subfolder/
  • 它将 mydomain.com/subfolder/ 重写为 mydomain.com/subfolder/en/ 但是有一个小问题:点击链接时 我期待浏览器打开 mydomain.com/subfolder/en/contact 但不知何故它会删除 /en/ 并打开 mydomain.com/subfolder/contact
  • 无视这一点。像这样重写并修复它:RewriteEngine on RewriteBase /twinstrailers/ # lang & page RewriteRule ^([a-z]{2})/([a-zA-Z0-9-]+)$ index.php?lang=$1&page=$2 [L] # Only lang RewriteRule ^([a-z]{2})/?$ index.php?lang=$1 [L] # no lang -> default "en" lang RewriteRule ^$ en/ [R=301,L]
【解决方案2】:

你的规则中有错误的正则表达式,试试这个:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/?$ index.php?lang=$1&page=$2 [L,QSA]

【讨论】:

  • 您的/? 创建了重复的内容
  • 它会创建重复的内容,因为您也可以访问 url.com/something/ 和 url.com/something。问题是两者都不一样:一个是目录,另一个是文件。例如,谷歌会将其视为重复内容。这就是为什么最好在 htaccess 中使用一条规则添加或删除尾部斜杠
  • 从规则开始不会创建 URL。 URL 由 Web 开发人员创建。这只是一个内部重写规则,它为 Web 开发人员提供了选择带有或不带有斜杠的 URL 方案的灵活性。
  • 这就是我所说的。有无尾斜线是不一样的!认为这是邪恶的,有利于重复内容。
  • 是的,不一样,但我想你仍然没有理解我的意思。规则不会创建重复的链接,这取决于 Web 开发人员在整个站点中维护特定的 URL 方案。
猜你喜欢
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
相关资源
最近更新 更多