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

Posted

技术标签:

【中文标题】如何为虚拟主机设置 htaccess 文件?【英文标题】:How can i set htaccess file for virtual host? 【发布时间】:2018-06-27 06:10:53 【问题描述】:

我用这段代码创建了一个虚拟主机:

<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。

【问题讨论】:

您使用哪个版本的 Apache? @benny-ben apache2 - 版本 2.4.8 - 2017 【参考方案1】:

我解决了这个问题:

RewriteEngine On

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

【讨论】:

您发现我的解决方案有什么不同?【参考方案2】:

我在 win 中使用 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

【讨论】:

以上是关于如何为虚拟主机设置 htaccess 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何为除 localhost 之外的所有域提供动态虚拟主机

如何为除 localhost 之外的所有域提供动态虚拟主机

如何为 Vue CLI 3 项目设置虚拟主机

如何为 Apache 2.4/ubuntu 13.10 及更高版本设置虚拟主机?

如何为开发机器设置本地绑定服务器以映射到服务器上的虚拟主机

如何为输出创建虚拟文件? [重复]