我想知道如何配置 Apache 来执行以下操作:
配置 1
当用户将浏览器指向http://localhost/
(并获取 的内容/var/www/index.html
)时,浏览器将重定向到http://localhost/magento/
(并获取 的内容/var/www/magento/index.php
)
配置 2
当用户输入 URL 时,
http://localhost/magento/
目录的内容/var/www/magento/index.php
会显示出来,但 URL 会变为http://localhost/
相反,当用户在浏览器中输入时, URL 不会改变,但会显示
http://localhost/
内容。/var/www/magento/
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