【问题标题】:How can i set htaccess file for virtual host?如何为虚拟主机设置 htaccess 文件?
【发布时间】: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

标签: apache .htaccess ubuntu-16.04 virtualhost


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 2011-05-13
    • 2012-05-28
    • 2020-07-17
    • 2018-07-04
    • 2014-04-22
    • 2013-07-16
    • 2013-03-15
    相关资源
    最近更新 更多