【问题标题】:pointing drupal to a subfolders using htaccess使用 htaccess 将 drupal 指向子文件夹
【发布时间】:2014-02-03 06:08:32
【问题描述】:

在我的共享主机根目录中,我有 2 个文件夹 main 和 demo。 main 包含主网站的 drupal 7 文件,demo 包含该网站的演示版本。我想要做的是,当我调用 www.domain.com 或 domain.com 时,它应该从主文件夹中获取内容,而当我调用 demo.domain.com 或 www.demo.domain.com (子域)时,我将能够获得该网站的演示版。我制作了一个如下所示的 .htaccess 文件并将其放在根文件夹中以进行重定向。问题是当我调用 www.domain.com 或 domain.com 打开主页但所有其他链接 (www.domain.com/page) 将不起作用。它起作用的唯一方法是当我将网址作为 www.domain.com/main/page 时。我已将base_url 也更改为'www.domain.com',我对htaccess 文件没有太多想法。请帮我解决这个问题。

RewriteEngine On
RewriteCond %{THE_REQUEST} \ /+main/
RewriteRule ^main/(.*)$ http://domain.com/$1 [L,R=301]
RewriteCond %{THE_REQUEST} \ /+demo/
RewriteRule ^demo/(.*)$ http://demo.domain.com/$1 [L,R=301]
RewriteRule ^(main|demo)/ - [L]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*)$ /main/$1 [L]
RewriteCond %{HTTP_HOST} ^(www\.)?demo\.domain\.com$ [NC]
RewriteRule ^(.*)$ /demo/$1 [L] 

【问题讨论】:

    标签: php apache .htaccess mod-rewrite drupal


    【解决方案1】:

    就最佳实践和性能而言,理想情况下应该将其添加到您的 apache 配置中,并按照以下方式进行查看:

    #example demo.domain.com.conf
    <VirtualHost 127.0.0.1:80>
        ServerName demo.domain.com
        DocumentRoot /var/www/demo.domain.com/htdocs
     <Directory /var/www/demo.domain.com/htdocs>
        Options All
        Allow from all
        AllowOverride All
     </Directory>
    </virtualhost>
    
    #example domain.conf
    <VirtualHost 127.0.0.1:80>
        ServerName domain.com
        ServerAlias www.domain.com
        DocumentRoot /var/www/domain.com/htdocs
     <Directory /var/www/domain.com/htdocs>
        Options All
        Allow from all
        AllowOverride All
     </Directory>
    </virtualhost>
    

    但是,如果这不是一个选项,并且您的控制仅限于根 Web 文件夹中的 .htaccess,您可以通过添加以下内容将子域代理到演示文件夹:

    #Add to .htaccess in web root under IfModule block:
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^demo\.(.+)$ [NC]
    RewriteRule ^(.*)$ http://domain.com/demo/$1 [P]
    

    这是假设您的主站点文件夹和演示中都有 drupal 核心。

    【讨论】:

    • 问题出在主网站上,我点击的任何链接都会像 www.domain.com/page 这正是我正在寻找的,但链接会给出这个错误“请求的页面” /page”找不到。'。要获得该页面,我必须手动创建指向 www.domain.com/main/page 的链接。
    【解决方案2】:

    谢谢大家,我想通了。这个 .htaccess 解决了我的问题。

    Options -Indexes
    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule ^$ main/index.php [L]
    RewriteCond %{DOCUMENT_ROOT}/main%{REQUEST_URI} -f
    RewriteRule .* main/$0 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* main/index.php?q=$0 [L,QSA]
    

    现在我可以将 drupal 文件放在名为 main 的子文件夹中,并且能够从浏览器访问子域 demo.subdomain。还需要将 settings.php 中的 $base_url 更改为 $base_url='www.domain.com' 。非常感谢 kahthong.com 提供了宝贵的post。

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 2013-11-22
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2017-04-15
      • 2017-12-05
      • 2012-01-09
      • 2014-03-17
      相关资源
      最近更新 更多