【问题标题】:How to make .htaccess rewrite for language subdomain versions?如何为语言子域版本重写 .htaccess?
【发布时间】:2017-01-21 14:59:13
【问题描述】:

我的项目需要语言版本,出于 SEO 目的,我不想为语言创建 $_SESSION,而是为语言版本使用子域名。假设我的俄文版网站如下所示:

ru.example.com

我希望当用户访问http://ru.example.com .htaccess 文件时加载位于网站根目录中的索引文件.. 但这并不是全部 !例如,如果用户访问:http://ru.example.com/products/.htaccess 文件来加载位于http://example.com/products/的索引文件

这有可能以某种方式完成吗?基本上我希望当服务器在 url 中加载文件时以某种方式忽略子域名 ru..

到目前为止,我有这个:

DirectoryIndex index.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ru\.example\.com$

我不知道如何完成其​​余的..

如果可以的话请帮忙

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    要做到这一点,只需让您的所有语言子域都由同一个网站提供服务。不需要 mod_rewrite。您可以在 php 中检查 HTTP_HOST 以查看正在访问的内容。将它们全部放在ServerAlias 中,或者只使用通用的ServerAlias *.example.com

    确保同时设置UseCanonicalName off,这样 Apache 生成的任何自引用 URL 都将使用访问过的任何主机,而不会删除您的语言子域。 Reference here.

    如果您不能这样做,请告诉我们您的主机设置,只要它在同一台服务器上,就可以通过重写来完成。

    【讨论】:

    • #SuperDuperApps 老实说,伙计,我远不能理解你的意思:) 服务器设置对我来说总是噩梦,而且我经常依赖托管公司的支持。请告诉我你想要我的设置更改 php.ini 文件,以便我可以按照您建议的方式设置服务器,我会按照他们的方式进行操作,谢谢您的帮助!
    • 澄清一下我无法访问公共共享主机上的 httpd.conf 文件。
    • 好的,所以请联系您的主机并告诉他们您希望网站为 *.example.com 提供服务,因为任何东西.example.com 都会为您的网站提供服务。或者告诉他们您希望 [列出您的所有语言子域] 由您的网站提供服务。如何完成取决于托管服务提供商。完成后,只需将每个语言子域设置为指向与您的网站相同的 IP 地址,或者您的托管服务提供商可能会执行该部分。完成后,您可以通过检查 $_SERVER['HTTP_HOST'] 来判断正在访问哪个子域。
    猜你喜欢
    • 2012-03-20
    • 2021-07-30
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多