Drupal 作为 CMS / 与现有网站集成,菜单路径问题

Posted

技术标签:

【中文标题】Drupal 作为 CMS / 与现有网站集成,菜单路径问题【英文标题】:Drupal as CMS / integration with existing website, menu path problems 【发布时间】:2011-01-26 02:31:38 【问题描述】:

我有基于 Zend Framework 构建的网站(与问题没有太大关系)并且 Drupal 安装在子文件夹/drupal 中

在网站的根目录中,我有以下 .htaccess

SetEnv APPLICATION_ENV development

RewriteEngine On

# this will be handled with Drupal
RewriteCond %REQUEST_URI ^/blog.*$  [OR]
RewriteCond %REQUEST_URI ^/financing.*$  [OR]
RewriteCond %REQUEST_URI ^/marketing.*$
RewriteRule (^.*$) /drupal/index.php?q=$1 [L]


# this is handled with Zend Framework
RewriteCond %REQUEST_FILENAME -s [OR]
RewriteCond %REQUEST_FILENAME -l [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

我的想法是这样的:如果有人访问 www.example.com/some-url 那么 Zend Framework 或静态文件将被处理,但是当 www.example.com/blog/some-blog-post 时,这个将使用 drupal 处理,这部分一切正常。

1) drupal 链接的问题在于它们的绝对路径是 www.example.com/drupal/blog/some-blog-post (当然,该帖子的别名是 blog/some-blog-post,但由于drupal安装在子文件夹中,它在blog/some-blog-post之前添加了/drupal)。由于网站根文件夹中的 .htaccess 规则,以下 url 也是有效的 www.example.com/blog/some-blog-post。我想以某种方式从网址中删除 /drupal 部分。我怎样才能做到这一点?

2) 如何使用相对路径(例如 /some-folder/some-page.html)以及网站根目录 链接到 /drupal 文件夹之外的页面/ ?我知道我可以将它们与绝对 URL 链接,例如 www.example.com/some-folder/some-page.html,但这对我不利。

【问题讨论】:

【参考方案1】:

Drupal 使用base_path() 获取该路径,您可以使用 settings.php 中的 $base_url 变量对其进行影响,该文件包含有关如何执行此操作的文档。

【讨论】:

当我在 settings.php 中设置 $base_url = "" 时,我遇到了各种奇怪的问题。这可以通过其他方式实现吗:比如...我可以重写所有包含“博客”、“融资”、“营销”等词的链接中的 URL,以排除安装 Drupal 的 /drupal 部分吗?如果你能告诉我怎么做,因为我对drupal不太擅长。一些钩子、模块等...? 请注意,您正在设置 $base_URL,而不是路径。因此,您需要将其设置为“http//example.org/”之类的内容。 Drupal 将基于此创建 $base_path。

以上是关于Drupal 作为 CMS / 与现有网站集成,菜单路径问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Drupal/CMS 项目上使用版本控制

linux:Drupal

使用 Apache Shiro 在自定义 Java Web 应用程序与 Drupal 之间进行 SSO 集成

在线尝试 Joomla、Drupal 和其他 PHP CMS 包?

Alfresco 与 drupal 的集成

开源PHP组件漏洞曝光,多个运行CMS系统的网站受影响