现在我 <td>
<span v-if="user.editmode">
<select v-model="user.city_id" required>
<option v-for="option in citiesByCountry[user.country_id]" :value="option.id">{{option.val}}</option>
</select>
</span>
<span v-else>{{user.city}}</span>
</td>
<td>
<span v-if="user.editmode">
<select v-model="user.country_id" required>
<option v-for="option in countries" :value="option.id">{{option.val}}</option>
</select>
</span>
<span v-else>{{user.country}}</span>
</td>
想出来了:
.htaccess
参数可以是lang
或en
如果lt
参数的值= lang
,则在域之后添加en
:
en/
- &gt; www.mysite.com/register.php?lang=en
如果www.mysite.com/en/register/
参数的值= lang
,则表示如下:
lt
- &gt; www.mysite.com/register.php?lang=lt
如果使用任何其他参数,则类似:
www.mysite.com/register/
- &gt; www.mysite.com/etc.php?id=123¶m=abc
当我直接输入地址栏时,它正常工作,但问题是当点击按钮更改语言时。我有导航和按钮来改变语言:
www.mysite.com/etc/123/abc/
点击if (!empty($_GET['lang']))
{
setcookie('lang', $_GET['lang']);
}
<form action="" method="get">
<input id="lang-lt" type="submit" name="lang" value="lt">
<input id="lang-en" type="submit" name="lang" value="en">
</form>
<li><a href="index.php">Home</a></li>
<li><a href="register.php">Register</a>
或lt
按钮时工作不正确,网址如下:
en
或www.mysite.lt/register/?lang=en
或www.mysite.lt/?lang=en
而不是
www.mysite.lt/?lang=lt
或www.mysite.lt/en/register/
或www.mysite.lt/en/
www.mysite.lt/
文件现在看起来像:
.htaccess
您知道问题出在哪里吗?
答案 0 :(得分:1)
将您的前2个重定向规则更改为:
完成.htaccess:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} \s/+(?:(?:index|(.+))\.php)?\?lang=lt\s [NC]
RewriteRule ^ %1? [R=302,L,NE]
RewriteCond %{THE_REQUEST} \s/+([^.?]+)/?\?lang=lt\s [NC]
RewriteRule ^ %1? [R=302,L,NE]
RewriteCond %{THE_REQUEST} \s/+(?:(?:index|(.+))\.php)?\?lang=(en)\s [NC]
RewriteRule ^ %2/%1? [R=302,L,NE]
RewriteCond %{THE_REQUEST} \s/+([^.?]+)/?\?lang=(en)\s [NC]
RewriteRule ^ %2/%1? [R=302,L,NE]
RewriteCond %{THE_REQUEST} \s/+(.+)\.php\?lang=(en)&id=([^\s&]+)\s [NC]
RewriteRule ^ %2/%1/%3? [R=302,L,NE]
RewriteCond %{THE_REQUEST} \s/+(.+)\.php\?lang=(en)&id=([^\s&]+)¶m=([^\s&]+)\s [NC]
RewriteRule ^ %2/%1/%3/%4? [R=302,L,NE]
RewriteCond %{THE_REQUEST} \s/+(.+\.php)\?lang=lt&(\S*)\s [NC]
RewriteRule ^ %1?%2 [L,NE,R=302]
RewriteCond %{THE_REQUEST} \s/+(.+)\.php\?id=([^\s&]+)\s [NC]
RewriteRule ^ %1/%2? [R=302,L,NE]
RewriteCond %{THE_REQUEST} \s/+(.+)\.php\?id=([^\s&]+)¶m=([^\s&]+)\s [NC]
RewriteRule ^ %1/%2/%3? [R=302,L,NE]
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.php\s [NC]
RewriteRule ^ %1%2/ [R=302,L,NE]
# url is ONLY '/en' or '/lt' -> redirect to /en/ or /lt/ (adding slash)
RewriteRule ^(en|lt)$ $1/ [R=301,L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !(^|&)lang=(en|lt)(&|$) [NC]
RewriteRule ^(?!(?:en|lt)/)(.+)$ lt/$1 [DPI,NC]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/$2.php !-f
RewriteRule ^(en|lt)/([\w-]+)/?$ - [L]
# now all urls have en/ lt/ -> parse them
RewriteRule ^(en|lt)/$ index.php?lang=$1 [L,NC,QSA]
RewriteRule ^(en|lt)/([\w-]+)/?$ /$2.php?lang=$1 [L,NC,QSA]
RewriteRule ^(en|lt)/([\w-]+)/([\w-]+)/?$ /$2.php?lang=$1&id=$3 [L,NC,QSA]
RewriteRule ^(en|lt)/([\w-]+)/([\w-]+)/([\w-]+)/?$ /$2.php?lang=$1&id=$3¶m=$4 [L,NC,QSA]