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 / 与现有网站集成,菜单路径问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apache Shiro 在自定义 Java Web 应用程序与 Drupal 之间进行 SSO 集成