【问题标题】:Visually change URL with htaccess使用 htaccess 直观地更改 URL
【发布时间】:2019-05-07 04:26:23
【问题描述】:

我正在尝试进行视觉上的改变

www.example.com/?lang=en

www.example.com/en

但它不起作用......

这是我的代码:

RewriteCond %{QUERY_STRING} ^lang=(\w+)$
RewriteRule ^(.*)\?lang=(\w+)$ /$1 [L]

我不想要任何重定向,我只想在 URL 上看到结果。

有人可以帮帮我吗?

谢谢。

【问题讨论】:

  • ^(.*)\?lang=(\w+)$ 永远不会匹配 - RewriteRule 只会根据模式检查 URL 的 path 组件。

标签: php .htaccess web


【解决方案1】:

试试这样的:

RewriteEngine On

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://yoursite.com/en/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://yoursite.com/de/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://yoursite.com/nl/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://yoursite.com/fr/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://yoursite.com/es/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(en|de|nl|fr|es)/?$ index.php?lang=$1 [QSA,NC,L]

【讨论】:

  • 我不是 100% 肯定我同意使用 HTTP:Accept-Language 但这会解决问题 - 如果你能添加一个关于 为什么的简短解释会很好> 这对 OP 和任何未来的访问者都有效;)
猜你喜欢
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
  • 2018-06-16
  • 1970-01-01
相关资源
最近更新 更多