Drupal 7 重写不使用 .htaccess
Posted
技术标签:
【中文标题】Drupal 7 重写不使用 .htaccess【英文标题】:Drupal 7 rewrite not using .htaccess 【发布时间】:2013-03-06 23:45:31 【问题描述】:我正在尝试在不使用 .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 文件中时却没有。
你们能看出这里有什么不对吗?
【问题讨论】:
【参考方案1】:我认为您的重写规则不应包含 '/'
前缀,因为它不再是 .htaccess 了。 Soo 尝试:
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
删除 .htaccess 引用是个好主意。您应该将AllowOverride None
放在<Directory />
指令上,以便从文件系统的根目录开始。如果您认为您也不需要+ExecCGI
。如果你想在没有 .htaccess 的情况下更深入地了解 Drupal 的 apache 配置,还请检查 this detailled resource。
【讨论】:
感谢您的回答,很抱歉我无法回答。我尝试不使用“/”,但仍然遇到与以前相同的问题 =/ 我可以阅读第一个索引页面并移至联系表单等等,但是当我尝试访问博客实体时,我被重定向回索引页。我还在日志文件中收到文件未找到错误消息。 好的,不要将我的答案标记为已接受,这会使您的情况适用于所有用户。改为支持它。然后更新您的问题,添加有关 url 工作和不工作的详细信息。以上是关于Drupal 7 重写不使用 .htaccess的主要内容,如果未能解决你的问题,请参考以下文章
重写Drupal的文件系统路径以删除冗余站点/example.com网站