3

我正在尝试在不使用 .htaccess 文件的情况下启用 drupal 7 中的重写功能,因为只有在您没有对服务器的 root 访问权限时才应该使用它(根据 apache 的网站)

没有任何进一步的告别,这是我的配置

<VirtualHost *:80>
  ServerName  www.example.com
  ServerAlias example.com

  DirectoryIndex index.php
  DocumentRoot /var/www/example.com/public

  ErrorDocument 404 /index.php

  LogLevel warn
  ErrorLog  /var/www/example.com/log/error.log
  CustomLog /var/www/example.com/log/access.log combined

  <Directory "/var/www/example.com/public">
    Options -Indexes +FollowSymLinks +ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all

    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
  </Directory>
</VirtualHost>

当我将它放在 .htaccess 文件中时,重写配置有效,但当我将它放在 vhost 文件中时却没有。

大家能看出这里有什么不对吗?

4

1 回答 1

1

我认为您的重写规则不应该包含'/'前缀,因为它不再是 .htaccess 了。Soo 尝试:

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

删除 .htaccess 引用是个好主意。您应该将AllowOverride Noneon<Directory />指令放在文件系统的根目录下。如果认为你不需要+ExecCGI也。如果您想在不使用 .htaccess 的情况下更深入地了解 Drupal 的 apache 配置,请查看此详细资源

于 2013-03-07T13:05:35.113 回答