我正在研究网页的完整结构,我正在使用目录网站的网址,用户可以通过类别和子类别了解网站地图。例如。我的主页是www.mantarrayamx.com。
我想加载的页面是www.mantarrayamx.com/services/seo,但对于seo,我使用子域名seo.mantarrayamx.com直接访问此目录。
我正在使用第三方代码,例如“font awesome”。不幸的是,网页加载失败,因为链接是相对的。我尝试输入CSS和JS,包括第三方代码,但它仍然加载错误。你可以看到子域加载和子目录加载之间的区别:
问题是: 使用和管理子域和链接的最佳方式是什么?(../ img /)?
例如:你如何在你的应用程序中使用谷歌:
如果我必须修改.htaccess
文件,请举个例子。
答案 0 :(得分:0)
就我的问题而言,您正在使用子域访问服务器的子目录。在此子域中,您的数据位于根目录中。我猜您在应用中使用绝对链接,例如:
首先:如果您只想将其用于seo-friendlieness和漂亮的链接,那么您一定要使用 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相对链接 NOT 的工作方式正如您对此解决方案所期望的那样,因为它们不会看到PHP处理的内容,而只会看到浏览器地址栏中的内容。所有相对链接都相对于伪子目录。要解决此问题,您可以在HTML文件中定义base-url。此HTML文件中加载的所有其他文件都与此URL相关。
如果我弄错了你真的希望在一个域上拥有真正的子目录而在另一个域上没有子目录,那么你可以使用HTML base-tag来定义不同的基础-URL取决于您是在主域还是子域。要找出后者,请尝试PHP super-global $_SERVER。请注意,HTML无法访问超出公共范围的内容 - 如果您的资源位于此子域中无法公开访问的更高子目录中,则您无法将其加载到HTML文件中。