我已经在Windows中设置并安装了Apache2.4。我的目标是允许特定IP地址访问本地托管的处理文件的Web应用程序。该Web应用程序是一个简单的应用程序,有4个不同的页面: Jmeter 板,登录,下载,和404,这是写/构建与React前端和Django后端。Web应用程序工作完美的罚款,当我访问它通过本地主机,但当我访问它从指定的IP地址之一,我可以看到的唯一路由是“/”路由,我有默认的登录页面的应用程序又名“/login”。奇怪的部分是,如果我然后登录,所有的路由都是可用的,除非我刷新页面,然后Apache响应“未找到”。2我如何配置Apache,以便如果我刷新页面,仍然服务于该路由?
在浏览了SO和reddit几天之后,以下是我到目前为止运气不佳的情况(所有IP地址都被替换为通用地址):
httpd.配置文件
Define SRVROOT "c:/Apache24"
ServerRoot "${SRVROOT}"
Listen *:8080
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
ServerAdmin example@gmail.com
ServerName localhost:8080
<Directory "/">
Options Indexes FollowSymLinks
AllowOverride All
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Directory>
<Directory "LOCATION/OF/STORAGE/zips">
Options Indexes FollowSymLinks
AllowOverride All
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Directory>
DocumentRoot "LOCATION/OF/FRONTEND/build"
<Directory "LOCATION/OF/FRONTEND/build">
Options Indexes FollowSymLinks
AllowOverride All
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Directory>
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/error.log"
LogLevel warn
<Directory "${SRVROOT}/cgi-bin">
AllowOverride None
Options None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Directory>
<IfModule headers_module>
RequestHeader unset Proxy early
</IfModule>
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
EnableMMAP off
EnableSendfile off
LoadFile "PATH/TO/PYTHON3_8"
LoadModule wsgi_module "PATH/TO/mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "PATH/TO/venv"
Include conf/extra/httpd-vhosts.conf
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
<IfModule mpm_winnt_module>
ThreadsPerChild 1920
MaxRequestsPerChild 0
</IfModule>
httpd-vhosts.配置文件
<VirtualHost *:8080>
DocumentRoot "LOCATION/OF/FRONTEND/build"
ProxyPreserveHost On
Alias /static/zips "LOCATION/OF/STORAGE/zips"
<Location /login>
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location "login">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location ~ "/login$">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location ~ "^\/login">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location "/register">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location "/404">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location ~ "\/static\/zips\/*">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location "/dashboard">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location ~ "^/dashboard/*">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location ~ "^\/dashboard\/*">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location ~ "^\/api\/*">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location ~ "/api/*">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
<Location ~ "\/*">
AllowOverride None
<RequireAny>
Require ip 1.1.1.1
Require ip 8.8.8.8
Require local
</RequireAny>
</Location>
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass /api http://127.0.0.1:8000/api
ProxyPassReverse /api http://127.0.0.1:8000/api
ServerName localhost
</VirtualHost>
正如你可能从这些文件中得到的,我对这个很陌生。我如何在Windows上配置Apache2.4,以便当我从特定的IP地址刷新特定的url时,路由会被找到?请随时询问更多的上下文!
1条答案
按热度按时间41ik7eoe1#
你不会相信的,但是Windows不喜欢我放在构建目录中的
.htaccess
文件。我将它重命名为
dot.htaccess
,并将AccessFileName dot.htaccess
添加到httpd.conf
文件中。在dot.htaccess
文件中,我有FallbackResource ./index.html
。另一个由于某种原因而被删除的建议现在建议我添加一个重写规则,我在
httpd.conf
中实现了该规则: