ApacheHTTP80.htacess,HTTPS443.htaccess不工作
当我运行api.troop37bsa.org/user时,我能够访问该页面,但当我运行时,我得到一个404错误。当我运行api.troop37bsa.org/?url=user或安全版本时,我得到了正确的页面 我正在使用一个.htaccess文件重写url,这样子域之后的所有内容都将被视为参数字符串 所以我的问题有两个方面。如何开始工作,以及如何减少.conf文件的大小和减少或合并.htaccess文件 我有一台Apache服务器2.4.18。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
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,整个网站正常运行。很高兴你解决了这个问题。