我在 000-default 虚拟主机文件中添加了以下几行:
Alias /antoniocs/project "/home/antoniocs/www/project"
<Directory "/home/antoniocs/www/project">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
/home/antoniocs/www/project 包含一个 drupal 网站
如果我去:
本地主机/antoniocs/项目
效果很好。我可以看到所有内容。但是当我尝试点击链接时,例如:
本地主机/antoniocs/项目/类别
我收到此错误:
未找到
该服务器上未找到所请求的 URL /home/antoniocs/www/project/index.php。
这难道不是在处理项目文件夹中的 .htaccess 吗?我做错了什么?
注意:我还发现奇怪的是它给了我一个文件路径而不是一个 url 路径
在 Apache 2.2.16(带 mod rewrite)Ubuntu 10.10 php 5.3.3-1ubuntu9.1 上运行
额外说明:对于那些不了解 drupals htaccess 的人来说,它会将所有内容重定向到 index.php?q=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
重写规则 ^(.*)$ index.php?q=$1 [L,QSA]
答案1
我知道这是一篇很老的文章,但是我认为我在另一个 StackExchange 网站上找到的这些信息可能会有所帮助。
当在您的 apache 配置中使用时,alias
您还需要RewriteBase
在 .htaccess 文件中使用与别名相同的内容。
Alias /antoniocs/project "/home/antoniocs/www/project"
<Directory "/home/antoniocs/www/project">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
要求您包括...
RewriteEngine On
RewriteBase /antoniocs/project
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
我实际上在一个项目中注意到了它,因为正在对 images/js/css 进行重写,而我所有的补充文件都无法加载。
答案2
听起来好像重写发生在错误的位置。例如,Web 服务器试图/home/antoniocs/www/project/index.php
通过相同的路径查找 URL 而不是本地文件。也许检查 Drupal 安装本身?您可以通过查看重定向请求来检查服务器的想法,例如卷曲:
curl -I http://localhost/antoniocs/project/category
查看是否返回代码 301 或 302,这可能有助于缩小问题范围。例如:
$ curl -I http://www.outflux.net/blog
HTTP/1.1 301 Moved Permanently
...
Location: http://www.outflux.net/blog/
答案3
或者,您也可以启用userdir
apache 模块。这样您就不必创建别名来访问位于主目录中的代码
sudo a2enmod userdir
cd ~
mkdir public_html
sudo /etc/init.d/apache2 restart
把你的代码放在这个public_html下,你可以通过以下方式访问它http://localhost/~用户名或者http://ip地址/~用户名(例如:http://本地主机/~aneesh)
您可以通过编辑 conf 文件来更改目录名称(public_html)/etc/apache2/mods-enabled/userdir.conf
答案4
看看这里是否有任何帮助:https://drupal.org/node/163915,您的问题可能与 /etc/apache2/sites-available/default 中的 AllowOverride 语句有关