Apache mod_重写URL

Apache mod_重写URL,apache,.htaccess,Apache,.htaccess,我的url如下所示: http://www.domain.com/us/en/ 我想重定向到: http://www.domain.com/en_US/ 最简单的方法是什么 多谢各位 编辑:这对于许多语言位置组合来说都是动态的 更多信息:一个更简单的问题是,是否有一种方法可以从第一个URL获取所有变量,并在第二个URL中使用它们以实现正确的重定向 http://www.domain.com/a/b/c/d 致: 在Apache配置中添加此行: RewriteMap uppercase in

我的url如下所示:

http://www.domain.com/us/en/
我想重定向到:

http://www.domain.com/en_US/
最简单的方法是什么

多谢各位

编辑:这对于许多语言位置组合来说都是动态的

更多信息:一个更简单的问题是,是否有一种方法可以从第一个URL获取所有变量,并在第二个URL中使用它们以实现正确的重定向

http://www.domain.com/a/b/c/d
致:


在Apache配置中添加此行:

RewriteMap uppercase int:toupper
然后重新启动服务器

然后将此规则添加到
文档\u ROOT/.htaccess
文件中:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]+)/([a-z]+)/?$ /$2_%{uppercase:$1}/ [L,R]
对于
http://www.domain.com/a/b/c/d
To:
http://www.domain.com/d/c/b/a


在Apache配置中添加此行:

RewriteMap uppercase int:toupper
然后重新启动服务器

然后将此规则添加到
文档\u ROOT/.htaccess
文件中:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]+)/([a-z]+)/?$ /$2_%{uppercase:$1}/ [L,R]
对于
http://www.domain.com/a/b/c/d
To:
http://www.domain.com/d/c/b/a



您是否希望使用大写的第一个URI段,如
us=>us,uk=>uk
etcyeah,这将是理想的,需要更改Apache服务器配置?你可以控制它吗?是的,我可以控制它。你想要像
us=>us,uk=>uk
etcyeah这样的大写URI段吗?这很好,需要更改Apache服务器配置?你有控制权吗?是的,我有控制权。所以你说的是,我可以用1美元2美元3美元在原始url中的/a/b/c/中,然后在第二个url中使用它们来按我的意愿重新排序?是的,这就是它的作用。每个
([^/]+)
$1、$2、$3
等中的原始URI捕获段。
R
用于重定向(在浏览器中更改URL),
L
用于将规则标记为
Last
,这将注入此规则,以便通过mod_重写循环进行进一步处理。因为我引起了你们的注意,到目前为止,你们都很有帮助。是否有一个条件,我可以用来说。如果$1==“foo”,然后将其重写为“bar”?是的,这条规则肯定是这样的:
RewriteRule^foo/([^/]+)/([^/]+)/([^/]+)/?$/bar/$3/$2/$1/[L,R]
,所以你说的是,我可以在原始url中使用$1$2$3来对/a/b/c/进行排序,并在第二个url中使用它们来按照我的意愿对它们进行重新排序?是的,确实如此。每个
([^/]+)
$1、$2、$3
等中的原始URI捕获段。
R
用于重定向(在浏览器中更改URL),
L
用于将规则标记为
Last
,这将注入此规则,以便通过mod_重写循环进行进一步处理。因为我引起了你们的注意,到目前为止,你们都很有帮助。是否有一个条件,我可以用来说。如果$1==“foo”,则将其重写为“bar”?是的,该规则肯定如下:
重写规则^foo/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$/bar/$3/$2/$1/[L,R]