我正在一个drupal网站上工作。当前的问题是,当使用url()
或base_path
变量创建链接时,它在本地开发环境中可以正常工作,但是当在服务器上放置相同的代码时,url会预先设置路径中的node
字符串。
e.g。路径为<drupal site>/latestnews
。生成的路径为<drupal site>/node/latestnode
,点击后会显示page not found
错误。但是,请注意,从主页单击时,链接可以正常工作(即生成正确的路径)。
任何帮助将不胜感激。如果它有帮助,我正在使用Pantheon托管进行测试。
答案 0 :(得分:1)
服务器是否偶然启用了病理模块?该模块的工作是重写不同位置的链接。它可能配置错误。如果已启用,请尝试禁用它,或以每种文本格式(admin / config / content / formats)调整其配置。
答案 1 :(得分:1)
您是否检查了&#39; sites / default / settings.php&#39;中的$ base_url变量?文件有正确的值?根据文档&#34;如果Drupal在您的网站上生成错误的网址,可以 *位于HTML标题(指向CSS和JS文件的链接)或页面上的可见链接 *(例如在菜单中),取消注释基本URL语句(删除 *前导哈希符号)并填写Drupal安装的绝对URL。&#34;
答案 2 :(得分:1)
我遇到了完全相同的问题并修复了它。
最初,我的网站没有使用干净的网址。当我启用了干净的URL并重写了我的链接,以便它们之前没有字符串“?q =”时,这破坏了我的硬编码链接。这是因为当不使用干净的URL时,页面看起来在根目录中,但是当使用干净的URL时,它们看起来在文件夹内。
以下示例显示了如何更新页面以使用干净的网址会对其产生影响。
Clean_urls_DISABLED
Page: SITE?q=node/7
Hard_coded_link_in_page: ?q=node/9
Link_displayed_in_browser: SITE?q=node/9
Clean_urls_ENABLED
Page: SITE/node/7
Hard_coded_link_in_page: node/9
Link_displayed_in_browser: SITE/node/node/9
请注意,更新为使用干净网址的网页在浏览器中显示时,链接中包含“node / node”。
解决方案是将“../”添加到所有硬编码网址(对于除首页之外的页面)。这样,其他内容(如图像)的硬编码链接也可以正常工作。
Clean_urls_ENABLED
Page: SITE/node/7
Hard_coded_link_in_page: ../node/9
Link_displayed_in_browser: SITE/node/../node/9
Hard_coded_image_source_in_page: ../sites/default/files/img.jpg
Image_source_in_browser: SITE/node/../sites/default/files/img.jpg
这适用于链接,图像和包含引用文件/文档的路径的任何其他元素的硬编码路径。