我试图在drupal 7中启用重写功能而不使用.htaccess文件,因为仅当您对服务器没有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文件中时,重写配置不起作用。

你们看到这里有什么问题吗?

最佳答案

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

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

删除.htaccess引用是一个好主意。您应该将AllowOverride None放在<Directory />指令上,以使其从文件系统的根目录开始。如果认为您也不需要+ExecCGI。如果您想在不使用.htaccess的情况下深入了解Drupal的apache配置,请同时检查this detailled resource

关于linux - 不使用.htaccess的Drupal 7重写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15260424/

10-15 15:41