Ubuntu Linux 上的 Apache 服务器配置

Ubuntu Linux 上的 Apache 服务器配置

我想知道如何配置 Apache 来执行以下操作:

配置 1

当用户将浏览器指向http://localhost/(并获取 的内容/var/www/index.html)时,浏览器将重定向到http://localhost/magento/(并获取 的内容/var/www/magento/index.php

配置 2

  1. 当用户输入 URL 时,http://localhost/magento/目录的内容/var/www/magento/index.php会显示出来,但 URL 会变为http://localhost/

  2. 相反,当用户在浏览器中输入时, URL 不会改变,但会显示http://localhost/内容。/var/www/magento/

  3. http://localhost/foo/bar/foobar/并且所有此类 URL 都显示的内容,/var/www/magento/foo/bar/foobar而不是/var/www/foo/bar/foobar


我尝试定义一个名为 的文件/var/www/.htaccess,我确信该文件会被 apache2 解析,但我没有看到上述任何情况发生。我在其中放置了以下内容:

RewriteRule / /magento/

答案1

确保 http.conf 中的以下行已取消注释(默认情况下它们已被注释掉):

#LoadModule rewrite_module modules/mod_rewrite.so

这可能存在于不同版本的 apache 中,如果有的话,请取消注释。

#AddModule mod_rewrite.c


这应该会启动重写引擎。现在来看看你的规则:

在您的 .htaccess 文件(位于您的网站根目录中)顶部添加此行:

RewriteEngine on

现在,设置完毕,您应该已经打开并启用了。现在只需触发一些规则。对于您来说,我认为应该如下所示:

RewriteRule ^/magento$ / 


看一眼http://www.sitepoint.com/guide-url-rewriting-2/以获得易于遵循的教程。


编辑
确保检查您是否允许从 .htaccess 文件中进行覆盖。找到 httpd.conf 中的 <directory /> 部分并进行如下修改:

<Directory />    
     Options FollowSymLinks    
     AllowOverride All
#    Order deny,allow
#    Deny from all
</Directory>


这里有一篇很好的文章,解释了启用 mod_rewrite 的常见问题:http://book.cakephp.org/1.3/view/917/Apache-and-mod_rewrite-and-htaccess

相关内容