WSGIScriptAlias 会,但 WSGIScriptAliasMatch 不会考虑 DirectoryIndex
WSGIScriptAlias does but WSGIScriptAliasMatch DOES NOT regard DirectoryIndex
这是我在 /etc/httpd/conf.d/ 中的 a.conf
而不是编辑 httpd.conf 我只是使用 a.conf
NameVirtualHost *:80
<VirtualHost *:80>
DirectoryIndex 1
DocumentRoot /a/b/
ServerName domain.tld
WSGIScriptAlias /1 /a/1.wsgi
WSGIScriptAlias /2 /a/2.wsgi
</VirtualHost>
在这个例子中,如果我通过网络访问 domain.tld..
WSGIScriptAlias /1 /a/1.wsgi
自动执行。
但让我们摆脱 WSGIScriptAlias 并改用 WSGIScriptAliasMatch。
<VirtualHost *:80>
DirectoryIndex 1
DocumentRoot /a/b/
ServerName domain.tld
WSGIScriptAliasMatch ^/(.*) /a/.wsgi
</VirtualHost>
现在..当我通过网络访问domain.tld时..我看不到1.wsgi
相反,它是默认的 apache 欢迎页面。
看起来很像..
WSGIScriptAliasMatch ^/(.*) /a/.wsgi
没有关注
DirectoryIndex 1
换句话说,通过网络域。tld/1 有效,但 domain.tld 无效..
这是什么原因造成的?
怎么会
WSGIScriptAlias /1 /a/1.wsgi
可以将 domain.tld 解释为域。tld/1 给定 DirectoryIndex 1
但是..
WSGIScriptAliasMatch ^/(.*) /a/.wsgi
无法将 domain.tld 解释为域。tld/1 给定 DirectoryIndex 1
?
一旦我解决了这个问题,我计划确保只接受数字 1 到 99 并将其定向到 wsgi 脚本。
换句话说.. domain.tld/1(索引)到 domain.tld/99 将指向 99.wsgi
换句话说,我理解 (.*) 可能是一个安全问题..但首先我想解决为什么.. DirectoryIndex 没有被 WSGIScriptAliasMatch ..当它被认为很好的时候经过
WSGIScriptAlias
如果我不能解决这个问题..我将不得不使用大概99行..
WSGIScriptAlias /1 /a/1.wsgi
WSGIScriptAlias /2 /a/2.wsgi
WSGIScriptAlias /3 /a/3.wsgi
...
WSGIScriptAlias /99 /a/99.wsgi
在a.conf
这可能不太合逻辑。
都是因为 DirectoryIndex 不能像使用 WSGIScriptAlias 那样使用 WSGIScriptAliasMatch
尝试:
WSGIScriptAliasMatch ^/(.+) /a/.wsgi
您正在匹配“/”,并将其映射到“/a/.wsgi”。确保“/”后至少有一个字符,如果这是您要使用的方案,最好确保它们是数字。
WSGIScriptAliasMatch ^/([1-9][0-9]*) /a/.wsgi
这是我在 /etc/httpd/conf.d/ 中的 a.conf 而不是编辑 httpd.conf 我只是使用 a.conf
NameVirtualHost *:80
<VirtualHost *:80>
DirectoryIndex 1
DocumentRoot /a/b/
ServerName domain.tld
WSGIScriptAlias /1 /a/1.wsgi
WSGIScriptAlias /2 /a/2.wsgi
</VirtualHost>
在这个例子中,如果我通过网络访问 domain.tld..
WSGIScriptAlias /1 /a/1.wsgi
自动执行。
但让我们摆脱 WSGIScriptAlias 并改用 WSGIScriptAliasMatch。
<VirtualHost *:80>
DirectoryIndex 1
DocumentRoot /a/b/
ServerName domain.tld
WSGIScriptAliasMatch ^/(.*) /a/.wsgi
</VirtualHost>
现在..当我通过网络访问domain.tld时..我看不到1.wsgi 相反,它是默认的 apache 欢迎页面。
看起来很像..
WSGIScriptAliasMatch ^/(.*) /a/.wsgi
没有关注
DirectoryIndex 1
换句话说,通过网络域。tld/1 有效,但 domain.tld 无效..
这是什么原因造成的?
怎么会
WSGIScriptAlias /1 /a/1.wsgi
可以将 domain.tld 解释为域。tld/1 给定 DirectoryIndex 1 但是..
WSGIScriptAliasMatch ^/(.*) /a/.wsgi
无法将 domain.tld 解释为域。tld/1 给定 DirectoryIndex 1 ?
一旦我解决了这个问题,我计划确保只接受数字 1 到 99 并将其定向到 wsgi 脚本。
换句话说.. domain.tld/1(索引)到 domain.tld/99 将指向 99.wsgi
换句话说,我理解 (.*) 可能是一个安全问题..但首先我想解决为什么.. DirectoryIndex 没有被 WSGIScriptAliasMatch ..当它被认为很好的时候经过 WSGIScriptAlias
如果我不能解决这个问题..我将不得不使用大概99行..
WSGIScriptAlias /1 /a/1.wsgi
WSGIScriptAlias /2 /a/2.wsgi
WSGIScriptAlias /3 /a/3.wsgi
...
WSGIScriptAlias /99 /a/99.wsgi
在a.conf
这可能不太合逻辑。
都是因为 DirectoryIndex 不能像使用 WSGIScriptAlias 那样使用 WSGIScriptAliasMatch
尝试:
WSGIScriptAliasMatch ^/(.+) /a/.wsgi
您正在匹配“/”,并将其映射到“/a/.wsgi”。确保“/”后至少有一个字符,如果这是您要使用的方案,最好确保它们是数字。
WSGIScriptAliasMatch ^/([1-9][0-9]*) /a/.wsgi