如何为虚拟主机设置 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章