如何启用mod_rewrite?

时间:2013-08-10 17:09:07

标签: apache .htaccess ubuntu-12.04

我已经使用tasksel在UBUNTU 12.04 64位服务器上安装了灯泡。一切都正常。但是现在我发现每个目录.htaccess apache覆盖的东西不起作用。

我在google上搜索了可能的原因。

http://www.cyberciti.biz/faq/apache-htaccess/

http://smartwebdeveloper.com/apache/htaccess-problems

但他们都没有工作。

我需要将domain.com重定向到www.domain.com。所以,我在服务器根

的.htaccess文件中使用以下代码
<IfModule mod_rewrite.c>

# Enable Rewrite Engine
RewriteEngine On
RewriteBase /

# Redirect to www.
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule (.*) http://www.domain.com/$1 [R=301,L] 

</IfModule>

Apache虚拟主机配置:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/
    <Directory />
            Options FollowSymLinks
            AllowOverride ALL
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride ALL
            Order allow,deny
            allow from all
    </Directory>
    ...........................
    ...........................
    ...........................

apacha2.conf有这个:

AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

1 个答案:

答案 0 :(得分:1)

所有内容看起来都设置正确,因此有可能mod_rewrite未启用。尝试从终端运行sudo a2enmod rewrite

另外,在对列出的任何文件(不是sudo service apache2 reload文件)进行更改后,不要忘记重新加载apache(sudo service apache2 restart)然后重新启动apache(.htaccess)它们会在每个请求中被读取,但是您列出的其余文件都会被读取。

HTH。 :)