如何在.htaccess中重定向=&燃气轮机/ua/to/?lang=ua

如何在.htaccess中重定向=&燃气轮机/ua/to/?lang=ua,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,我有一个多语言网站和.htaccess,它显示所有页面和语言?lang=ua风格 我想用RewriteEngine将(使用代码301)askssite.com/en/重定向到site.com/?lang=en 例如: site.com/en/ => site.com/?lang=en site.com/ua/news.html => site.com/news.html?lang=ua site.com/ua/news/2-material-tw

我有一个多语言网站和.htaccess,它显示所有页面语言?lang=ua风格

我想用RewriteEngine将(使用代码301)askssite.com/en/重定向到site.com/?lang=en

例如:

site.com/en/               => site.com/?lang=en
site.com/ua/news.html      => site.com/news.html?lang=ua
site.com/ua/news/2-material-two.html => site.com/news/2-material-two.html?lang=ua
and so on much...
如何为Apache准备Htaccess文件以满足此标准?你怎么做

提前感谢

试试这个:

Options +FollowSymlinks

RewriteEngine on

RewriteOptions MaxRedirects=10

RewriteBase /

RewriteRule http://site.com/([^/]+)/(.+).html$ http://site.com/$2.html?lang=$1 [R=301,NC]
我只是把它放在了我的头上,所以它可能不太正确,但是它会检查url,
([^/]+)
应该读取第一个目录,然后读取到.html的所有内容


然后,它将url重写为site.com/[earthing after 1st dir to.html].html?lang=[name of 1st dir]

将此代码放在.htaccess文件的文档根目录下:

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^([^/]+)/(.*)$ /$2?lang=$1 [L,R=301,QSA]

将以下内容添加到域根目录中的htaccess文件中

RewriteEngine On
RewriteBase /

#if the lang param is not present
RewriteCond %{QUERY_STRING} !^lang=
#capture the language code and redirec to url with lang param
RewriteRule ^([a-zA-Z]+)/(.+\.html)$ /$2?lang=$1 [L,R=301,NC]

请注意,如果你必须使用一般的“目录匹配”规则,考虑一下!d运算符(可选的是!-f运算符)


因此,您不会最终解决现有文件和/或目录的各种奇怪问题。

我认为您应该在服务器故障中提出这个问题。这也是一个很好的解决方案,但它不允许进一步的目录级别,因为每个目录级别都需要一个单独的重写规则。如果有多个级别,最好使用更动态的method@FluffyKitten:现在检查答案,它是完全通用的,适用于OP.Neat解决方案中的所有测试用例。我要把它往上推,因为它比我快速拼凑起来的那个要整洁!有两件事:我也会添加NC代码,否则它是区分大小写的,我会包括RewriteOptions maxrirects=10,以防出现问题,它会阻止无限循环@Areku_UA你应该接受这个解决方案,它会奖励anubhava声誉,也会给你一个公认的答案评级,同时会鼓励其他人回答你未来可能遇到的问题。你好,anubhava!我来过这里。试着回答。但失败了。错误输出-
http://site.com/ru/news?lang=ru&lang=ru&lang=ru&lang=ru&lang=ru&lang=ru&lang=ru&‌​lang=ru&lang=ua&lang=ru
=>需要
http://site.com/?lang=ru
。我自己试图改变你的答案。再次失败。我真的不知道只有重定向。我认为您需要添加
RewriteCond%{QUERY\u STRING}…
您可以更改答案吗?我在等答案。提前谢谢。@anubhava我有这样一个问题,但恰恰相反,我需要将
/?lang=en
重定向到
/en
,这里是我的帖子你好,anubhava!我来过这里。试着回答。一切正常。不完全正确,但是你需要去掉多余的部分。这个结论-
http://site.com/ua/material-1?lang=ru
=>需要更正-
http://site.com/material-1.html?lang=ru
(要删除多余的
/ua/
并添加
.html
),您可以修复吗?我不知道重定向的情况。等待回答。提前谢谢。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})/ http://site.com/?lang=$1 [R=301,L]