我遇到.htaccess配置问题。我的网络服务器是Apache2,我的网站是用PHP编写的。但是,我在.htaccess方面遇到了一些麻烦。
虽然我通过非ssl(http://mywebsite.dev)访问它,但我的.htaccess正常工作。我使用.htaccess进行URL重写并通过自定义模板处理错误。但是,当我通过SSL(https://mywebsite.dev)访问它时,索引页面正常工作。但是,当我访问https://mywebsite.dev/page/about时,它显示404未找到(显示默认的404未找到页面,而不是我的自定义页面。这意味着,我的.htaccess代码未加载)。
对于我的网址结构,它是http://mywebsite.dev/?load=page&page=about。如果我访问http://mywebsite.dev/page/about,它就可以了。但是,不是通过SSL。有什么问题?顺便说一句,我的/etc/apache2/sites-available/website.conf代码是:
<VirtualHost *:80>
ServerName mydomain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/website/
<Directory /var/www/html/website>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# enabled or disabled at a global level, it is possible to
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
而且,我的.htaccess代码是:
RewriteEngine On
RewriteRule ^page/([A-Za-z0-9-]+)/?$ index.php?load=page&page=$1 [NC]
ErrorDocument 404 /public/404.html
我在Windows中使用Laragon进行开发。对于生产环境是:Ubuntu 16,PHP 7和Apache2。感谢。
抱歉语法错误,或者你不明白我的意思。非常感谢您阅读我的问题:)
答案 0 :(得分:3)
行<VirtualHost *:80>
告诉apache此配置仅适用于所有接口(*
)上的流量,但仅适用于端口80(:80
)。 AllowOverride All
未应用于https(端口443),因为它不匹配。
要解决此问题,您需要另一个虚拟主机<VirtualHost *:443>
。您可以复制两个虚拟主机中的内容或使用包含,请参阅此server fault answer。