我试图在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/