【问题标题】:Subdomains and related links on a website网站上的子域和相关链接
【发布时间】:2015-11-30 07:45:28
【问题描述】:

我正在研究网页的完整结构,并且我正在使用用户可以理解站点地图的站点 url 的目录以及类别和子类别。例如。我的主页是 www.mantarrayamx.com。

我要加载的页面是 www.mantarrayamx.com/services/seo,但对于 seo,我使用子域 seo.mantarrayamx.com 直接访问此目录。

我正在使用第三方代码,例如“font awesome”。不幸的是,网页加载失败,因为链接是相对的。我尝试输入包括第三方代码的 CSS 和 JS,但它仍然加载错误。您可以在这里看到按子域加载和按子目录加载的区别:

  • mantarrayamx.com/servicios/posicionamientoweb/
  • posicionamientoweb.mantarrayamx.com/

问题是: 使用和管理子域和链接 (../img/) 的最佳方式是什么?

例如:你如何在你的应用程序中做 google:

  • drive.google.com
  • mail.google.com

如果我必须修改.htaccess文件,请给我一个例子。

【问题讨论】:

    标签: php apache .htaccess permalinks subdomain


    【解决方案1】:

    据我所知,您正在使用子域访问服务器的子目录。在此子域上,您的数据位于根目录中。我猜你在你的应用中使用了绝对链接,比如:

    • /service/type/(index.php) 或
    • /about/me/(index.php)

    首先:如果你只是想为了 seo 友好和漂亮的链接而拥有它,你绝对应该使用 mod_rewrite 或适当的 nginx-config。这使您免于拥有真正的子目录 - 您只是“伪造”它们。以下代码将所有请求的 URL 重写为 index.php?r=theenteredurl。在 PHP(或者,如果您愿意,您可以选择任何其他处理语言)中,您可以清理 URL,对其进行分析,然后提供正确的内容。

    mod_rewrite:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteBase /
    RewriteRule ^(.*)$ index.php?r=$1 [L]
    

    Nginx:

    location / {
        try_files $uri $uri/ /index.php?r=$request_uri;
    }
    

    这个解决方案的好处是,真正得到处理的唯一文件是您的index.php,因此您的应用程序/网站整洁并在一个地方。但请注意:HTML、CSS 和 JS 相关链接在此解决方案中确实按您预期的那样工作,因为它们看不到 PHP 处理的内容,而只看到浏览器地址栏中的内容.所有相对链接都相对于假子目录。为了解决这个问题,您可以在 HTML 文件中定义一个 base-url。此 HTML 文件中加载的所有其他文件都将与此 url 相关。

    如果我理解错了,而你真的想要在一个域上拥有真正的子目录,而在另一个域上没有子目录,那么你可以使用 HTML base-tag 来定义不同的基础-URL 取决于您是在主域还是子域。要找出后者,请尝试PHP super-global $_SERVER。请注意,HTML 无法访问公共范围之外的内容 - 如果您的资源位于此子域上不可公开访问的更高子目录中,则您无法将其加载到 HTML 文件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-10
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多