网站上的子域和相关链接

Subdomains and related links on a website

我正在处理一个网页的完整结构,我正在使用 url 站点的目录,用户可以理解站点地图,包括类别和子类别。例如。我的主页是 www.mantarrayamx.com.

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

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

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

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

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

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

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

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

mod_rewrite:

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

Nginx:

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

此解决方案的好处是,真正得到处理的唯一文件是您的 index.php,因此您可以将 app/website 整齐地放在一个地方。但请注意:HTML、CSS 和 JS 相关链接 NOT 无法像您预期的那样使用此解决方案,因为它们看不到 PHP 进程,但仅限于浏览器地址栏中的内容。所有相关链接都是相对于假子目录的。要解决这个问题,您可以在 HTML 文件中定义一个 base-url。此 HTML 文件中加载的所有其他文件将相对于此 url.

如果我误会了你,你真的想要在一个域上有真正的子目录而在另一个域上没有子目录,那么你可以使用HTML base-tag 定义不同的 base-URL 取决于你是在主域还是子域。要找出后者,请尝试 PHP super-global $_SERVER。请注意,HTML 无法访问超出 public 范围的内容 - 如果您的资源位于更高的子目录中,而该子域无法 public 访问,您就没有机会将其加载到 HTML 个文件中。