网址不友好 - i18n

时间:2013-11-11 22:19:20

标签: php session seo

我正在使用此代码:

<ul>
   <a href="?lang=pt"><li class="pt lang"></li></a>
   <a href="?lang=en"><li class="us lang"></li></a>
</ul>

将输出类似这样的网址链接:

http://localhost/site/?lang=en

我的问题是关于SEO。 SEO医生扩展说这个网址不友好。我怎么解决这个问题?会议?怎么样?

这样的事情对我有用:

$_SESSION['lang']

2 个答案:

答案 0 :(得分:0)

在会话中存储语言对于纯粹的内容页面来说并不是真正用户友好的 - 至少不是seo友好的,因为你可以为每种语言提供两个不同内容的网址。

最好将语言存储在网址中 - 或者使用不同的域来实现此目标

example.com/site/    - for english content
example.de/site/     - for german content

或将语言存储在网址

example.com/de/site/
example.com/de/site/

在不更改完整内容的情况下执行此操作的简单方法是mod_rewrite并将example.com/en/site/替换为example.com/site/并将en字符串添加到POST或GET参数

答案 1 :(得分:0)

您尚未指定您正在使用的HTTP服务器。假设您正在使用Apache,则可以通过在适当的.htaccess文件中配置clean URLs扩展名来创建mod_rewrite

例如,这是Drupal在其.htaccess文件中正在执行的操作:

<IfModule mod_rewrite.c>
  RewriteEngine on
  # Pass all requests not referring directly to files in the filesystem to
  # index.php.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

您可以使用类似的规则将“lang”(和任何其他)参数作为网址的一部分传递。因此,通过适当配置的重写规则,可以使用以下URL:

http://something.com/?foo=1&bar=2&baz=3

可能会成为:

http://something.com/1/2/3

基本上将网址的第一部分分配给foo,第二部分分配给bar,第三部分分配给baz