Regex Apache重写替换变量

Regex Apache重写替换变量,regex,apache,.htaccess,mod-rewrite,url-rewriting,Regex,Apache,.htaccess,Mod Rewrite,Url Rewriting,我花了几个小时思考一个问题 我为一些应用程序创建了一个疯狂的url,它在以下条件下运行良好: RewriteEngine On RewriteRule ^/shop/([a-z]*)/([a-záéíóúüñç]*)-([a-záéíóúüñç]*)$ /carga.php?car=$3&model=$2&type=buy&lang=$1&other=$4 [QSA] 在此之后,url如下所示: example.com/shop/spanish/m3 bmw?o

我花了几个小时思考一个问题

我为一些应用程序创建了一个疯狂的url,它在以下条件下运行良好:

RewriteEngine On
RewriteRule ^/shop/([a-z]*)/([a-záéíóúüñç]*)-([a-záéíóúüñç]*)$ /carga.php?car=$3&model=$2&type=buy&lang=$1&other=$4 [QSA]
在此之后,url如下所示:

example.com/shop/spanish/m3 bmw?other=somevar

但主要的问题是,应用程序必须接收两个字母格式的语言,例如,简单地说,es、en、ru——无论如何,它必须以这种格式从url发送到应用程序。现在我看到应用程序从url接收完整的单词

所以现在url看起来是这样的:

example.com/shop/spanish/m3 bmw?other=somevar

但应用程序需要这样:

example.com/shop/es/m3 bmw?other=somevar


提前谢谢你

根据你所说的你想要的,你只需要这个:

RewriteEngine On
RewriteRule ^/shop/([a-z]{2})[a-z]*/([a-záéíóúüñç]*)-([a-záéíóúüñç]*)$ /carga.php?car=$3&model=$2&type=buy&lang=$1&other=$4 [QSA]

但如果语言代码不是前两个字母,我不确定它是否适用于所有语言。

谢谢,它工作得非常好!是的,你是对的,它不会适用于所有的语言,因为根据ISO标准,例如,西班牙语的代码是“es”,但在英语中,它将是“sp”从“西班牙语”改写而来。但这只是没有意义的家庭作业,我只需要让它根据练习进行。无论如何,它可能对其他任务有用。对于语言检测,在我看来,最好使用RewriteCond%{HTTP:Accept language}或按应用程序检测语言。