如何配置Windows Apache2.4以允许除“/”以外的特定URL

bq8i3lrv  于 2022-12-19  发布在  Apache
关注(0)|答案(1)|浏览(102)

我已经在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时,路由会被找到?请随时询问更多的上下文!

41ik7eoe

41ik7eoe1#

你不会相信的,但是Windows不喜欢我放在构建目录中的.htaccess文件。
我将它重命名为dot.htaccess,并将AccessFileName dot.htaccess添加到httpd.conf文件中。在dot.htaccess文件中,我有FallbackResource ./index.html
另一个由于某种原因而被删除的建议现在建议我添加一个重写规则,我在httpd.conf中实现了该规则:

RewriteEngine On
RewriteRule ^/(.*)$ / [L]

相关问题