ApacheHTTP80.htacess,HTTPS443.htaccess不工作

ApacheHTTP80.htacess,HTTPS443.htaccess不工作,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,当我运行api.troop37bsa.org/user时,我能够访问该页面,但当我运行时,我得到一个404错误。当我运行api.troop37bsa.org/?url=user或安全版本时,我得到了正确的页面 我正在使用一个.htaccess文件重写url,这样子域之后的所有内容都将被视为参数字符串 所以我的问题有两个方面。如何开始工作,以及如何减少.conf文件的大小和减少或合并.htaccess文件 我有一台Apache服务器2.4.18。 My.conf文件的设置如下: <Virtu

当我运行api.troop37bsa.org/user时,我能够访问该页面,但当我运行时,我得到一个404错误。当我运行api.troop37bsa.org/?url=user或安全版本时,我得到了正确的页面

我正在使用一个.htaccess文件重写url,这样子域之后的所有内容都将被视为参数字符串

所以我的问题有两个方面。如何开始工作,以及如何减少.conf文件的大小和减少或合并.htaccess文件

我有一台Apache服务器2.4.18。
My.conf文件的设置如下:

<VirtualHost *:80>

        ServerAdmin kreichner@troop37bsa.org
        ServerName api.troop37bsa.org
        ServerAlias api.troop37bsa.org
        DocumentRoot /var/www/troop37bsa.org/api/public

        <Directory /var/www/troop37bsa.org/api/public>
                DirectoryIndex index.php index.html
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>
        AccessFileName .htaccess

        ErrorLog /var/www/troop37bsa.org/api/public/apache_error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

#RewriteEngine on
#RewriteCond %{SERVER_NAME} =api.troop37bsa.org
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

</VirtualHost>

<VirtualHost *:443>

        ServerAdmin kreichner@troop37bsa.org
        ServerName api.troop37bsa.org
        ServerAlias api.troop37bsa.org
        DocumentRoot /var/www/troop37bsa.org/api/public

        <Directory /var/www/troop37bsa.org/api/public>
                DirectoryIndex index.php index.html
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>
        AccessFileName .htaccess
        ErrorLog /var/www/troop37bsa.org/api/public/apache_https_error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined



</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerAdmin kreichner@troop37bsa.org
        ServerName api.troop37bsa.org
        ServerAlias api.troop37bsa.org
        DocumentRoot /var/www/troop37bsa.org/api/public

        <Directory /var/www/troop37bsa.org/api/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLCertificateFile /etc/letsencrypt/live/troop37bsa.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/troop37bsa.org/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
我还使用了一个letsencrypt SSL证书,在其他方面它似乎工作得很好


谢谢

正如我在评论部分所说的,原来有一个由letsencrypt生成的conf文件,但它指向了错误的目录publicl,而不是public。当我更改目录名时。.htaccess文件完成了它的工作。我还从原始配置中删除了第二个*.443虚拟主机,以避免进一步冲突

因此,其他人可能不会遇到同样的问题。conf的名称是api.troop37bsa.org-le-ssl.conf。这将设置SSL证书的查找

api.TROP37BSA.org-le-ssl.conf代码如下:

<VirtualHost *:80>

        ServerAdmin kreichner@troop37bsa.org
        ServerName api.troop37bsa.org
        ServerAlias api.troop37bsa.org
        DocumentRoot /var/www/troop37bsa.org/api/public

        <Directory /var/www/troop37bsa.org/api/public>
                DirectoryIndex index.php index.html
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>
        AccessFileName .htaccess

        ErrorLog /var/www/troop37bsa.org/api/public/apache_error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

#RewriteEngine on
#RewriteCond %{SERVER_NAME} =api.troop37bsa.org
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

</VirtualHost>

<VirtualHost *:443>

        ServerAdmin kreichner@troop37bsa.org
        ServerName api.troop37bsa.org
        ServerAlias api.troop37bsa.org
        DocumentRoot /var/www/troop37bsa.org/api/public

        <Directory /var/www/troop37bsa.org/api/public>
                DirectoryIndex index.php index.html
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>
        AccessFileName .htaccess
        ErrorLog /var/www/troop37bsa.org/api/public/apache_https_error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined



</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerAdmin kreichner@troop37bsa.org
        ServerName api.troop37bsa.org
        ServerAlias api.troop37bsa.org
        DocumentRoot /var/www/troop37bsa.org/api/public

        <Directory /var/www/troop37bsa.org/api/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLCertificateFile /etc/letsencrypt/live/troop37bsa.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/troop37bsa.org/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

服务器管理员kreichner@troop37bsa.org
ServerName api.troop37bsa.org
ServerAlias api.troop37bsa.org
DocumentRoot/var/www/troop37bsa.org/api/public
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
#如果要查看apache2,请取消对该指令的注释
#转到时的默认起始页(在/apache2默认值中)/
#重定向匹配^/$/apache2默认值/
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
SSLCertificateFile/etc/letsencrypt/live/troop37bsa.org/fullchain.pem
SSLCertificateKeyFile/etc/letsencrypt/live/troop37bsa.org/privkey.pem
Include/etc/letsencrypt/options-ssl-apache.conf

谢谢大家的帮助。

正如我在评论部分所说,原来有一个由letsencrypt生成的conf文件,但它指向了错误的目录publicl,而不是public。当我更改目录名时。.htaccess文件完成了它的工作。我还从原始配置中删除了第二个*.443虚拟主机,以避免进一步冲突

因此,其他人可能不会遇到同样的问题。conf的名称是api.troop37bsa.org-le-ssl.conf。这将设置SSL证书的查找

api.TROP37BSA.org-le-ssl.conf代码如下:

<VirtualHost *:80>

        ServerAdmin kreichner@troop37bsa.org
        ServerName api.troop37bsa.org
        ServerAlias api.troop37bsa.org
        DocumentRoot /var/www/troop37bsa.org/api/public

        <Directory /var/www/troop37bsa.org/api/public>
                DirectoryIndex index.php index.html
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>
        AccessFileName .htaccess

        ErrorLog /var/www/troop37bsa.org/api/public/apache_error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

#RewriteEngine on
#RewriteCond %{SERVER_NAME} =api.troop37bsa.org
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

</VirtualHost>

<VirtualHost *:443>

        ServerAdmin kreichner@troop37bsa.org
        ServerName api.troop37bsa.org
        ServerAlias api.troop37bsa.org
        DocumentRoot /var/www/troop37bsa.org/api/public

        <Directory /var/www/troop37bsa.org/api/public>
                DirectoryIndex index.php index.html
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>
        AccessFileName .htaccess
        ErrorLog /var/www/troop37bsa.org/api/public/apache_https_error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined



</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerAdmin kreichner@troop37bsa.org
        ServerName api.troop37bsa.org
        ServerAlias api.troop37bsa.org
        DocumentRoot /var/www/troop37bsa.org/api/public

        <Directory /var/www/troop37bsa.org/api/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLCertificateFile /etc/letsencrypt/live/troop37bsa.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/troop37bsa.org/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

服务器管理员kreichner@troop37bsa.org
ServerName api.troop37bsa.org
ServerAlias api.troop37bsa.org
DocumentRoot/var/www/troop37bsa.org/api/public
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
#如果要查看apache2,请取消对该指令的注释
#转到时的默认起始页(在/apache2默认值中)/
#重定向匹配^/$/apache2默认值/
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
SSLCertificateFile/etc/letsencrypt/live/troop37bsa.org/fullchain.pem
SSLCertificateKeyFile/etc/letsencrypt/live/troop37bsa.org/privkey.pem
Include/etc/letsencrypt/options-ssl-apache.conf

谢谢大家的帮助。

您是否尝试过在AllowOverride none的情况下禁用.htaccess(因为您似乎可以访问virtualhost,而且无论如何都不需要它),并在virtualhost配置中为这两个virtualhost添加一个简单的“FallBackResource/index.php”?如果您坚持使用这组重写,那么最后一个条件可以避免任何正常的uri出现在index.php,这就是为什么/user会给您一个404,如果它不存在的话。@ezra-s谢谢。这就是我想要的。主要的困难似乎是我以前没有看到的.conf文件。它显然是由letsencrypt生成的。无论如何,它指向的是/publicl而不是publilc。我删除了l,删除了虚拟主机*443,整个站点按预期运行。很高兴你解决了这个问题。你是否尝试过禁用.htaccess和AllowOverride none(因为你似乎可以访问virtualhost,而且不需要它),只需添加一个简单的“FallBackResource/index.php”在两个虚拟主机的虚拟主机配置中?如果您坚持使用这组重写,那么最后一个条件可以避免任何正常的uri出现在index.php,这就是为什么/user会给您一个404,如果它不存在的话。@ezra-s谢谢。这就是我想要的。主要的困难似乎是我以前没有看到的.conf文件。它显然是由letsencrypt生成的。无论如何,它指向的是/publicl而不是publilc。我删除了l,删除了虚拟主机*443,整个网站正常运行。很高兴你解决了这个问题。