如何为虚拟主机设置htaccess文件?

时间:2018-01-18 08:26:03

标签: apache .htaccess ubuntu-16.04 virtualhost

我使用以下代码创建了一个虚拟主机:

<VirtualHost *:80>

    ServerAdmin admin@127.0.0.1
    ServerName site.ws
    ServerAlias www.site.ws
    DocumentRoot /home/me/Projects/website/build
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /home/me/Projects/website/build>

        Allow from all
        Satisfy any

</Directory>

</VirtualHost>

我使用以下代码在/ build目录中创建了一个.htaccess文件:

RewriteEngine On

RewriteRule   ^(.*)$    $1.html    [R,NC]

考虑我的mod_rewrite在apache2中处于活动状态,但我无法用/ filename

打开页面

例如site.ws/about

显示错误: 在此服务器上找不到请求的URL / about。

2 个答案:

答案 0 :(得分:1)

我用以下方法解决了这个问题:

&#13;
&#13;
RewriteEngine On

RewriteRule   ^([a-zA-Z-]+)$	$1.html    [L,NC]
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我在win2中尝试使用Apache2 2.4.27:

首先在httpd.conf文件中启用vhost。

虚拟主机:

<VirtualHost *:80>
    ServerName site.ws
    DocumentRoot /home/me/Projects/website/build
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /home/me/Projects/website/build>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

htaccess的:

###START MOD_REWRITE
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    #REMOVE .html EXTENSION
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^\.]+)$ $1.html [NC,L]

</IfModule>
###END MOD_REWRITE