【问题标题】:php links not working in sub folder of multi sitephp链接在多站点的子文件夹中不起作用
【发布时间】:2017-09-26 03:20:55
【问题描述】:

测试两个相同的文件夹,一个放在 Drupal 安装文件夹中,另一个放在一个普通的 html 子文件夹中 home root ,只有 CMS 安装中的那个的 php 链接有效。这是有道理的,因为 Drupal 有一个设置 php 文件和 .htaccess 文件,确保一切都在适当的位置,以使链接无论是否在主根目录中都可以正常工作。但是我认为通过简单的重写就可以很容易地让链接在普通的 html 子文件夹中工作 php 文件夹中存在的 .htaccess 文件中的规则。然而,尽我所能,到目前为止没有任何效果。

/etc/httpd/conf.d/my.conf中的配置

<VirtualHost *:80>
ServerName drupalsite.com
ServerAlias www.drupalsite.com
ServerAdmin vps@drupalsite.com
DocumentRoot "/var/www/html/drupalsite.com"
<Directory /var/www/html/drupalsite.com>
AllowOverride All
Allow from all
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName plainhtml.com
ServerAlias www.plainhtml.com
ServerAdmin vps@plainhtml.com
VirtualDocumentRoot "/var/www/html/plain”
</VirtualHost>

相同 php 文件夹中的 .htaccess 文件

RewriteEngine On
RewriteBase /phpfolder/

RewriteRule ^c-(.*)$ catpost.php?id=$1 [L]
RewriteRule ^a-(.*)-(.*)$ archives.php?month=$1&year=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L]

所以 drupalsite.com/phpfolder 链接一切正常

但是plainhtml.com/phpfolder 链接不起作用

Drupal 的 php 文件夹位于 /var/www/html 并且 Drupal 站点是符号链接的

普通 html 子文件夹到根目录的 phpfolder 位于 /var/www/html/plain

两个 phpfolders 都归 apache:root 所有,其中的所有文件都归 root:root 所有

还尝试将 .htaccess 重写规则更改为:

重写基础/

RewriteBase /plain/

RewriteBase /plain/phpfolder/

【问题讨论】:

    标签: php .htaccess httpd.conf


    【解决方案1】:

    您必须使用 AllowOverride 定义一个目录条目: /var/www/html/plain

    <Directory /var/www/html/plain>
        AllowOverrideAll
        Allow from all
    </Directory>
    

    注意:如果您有权访问您不应该使用 .htaccess 的服务器的主配置文件,那么在 Virtualhost 中配置 Rewrites 或 Redirects 会更简单。正如您已经看到的,使用子文件和每个目录的配置会使事情变得更加复杂,这还不包括在启用 AllowOverride 时 apache 必须不断检查这些文件的开销。

    【讨论】:

    • 其实挺复杂的,因为配置文件设置为监听.htaccess文件,并设置注释为Directory, Allow from all。这是因为 Drupal 方面是一个多站点设置,带有指向 /var/www/html 的符号链接......所以现在似乎不可能让双方都工作,我仍然完全陷入困境。很抱歉,上面的方法不起作用,它实际上使链接完全失效,甚至没有 404。
    • 我最终解决了这个问题,将配置更改为 /var/www/html/plain/phpfolder 并将 phpfolder 中的 .htaccess 文件更改为 RewriteBase /
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2011-04-10
    相关资源
    最近更新 更多