2015-07-21 24 views
0

這是我在/etc/httpd/conf.d/ 而不是編輯的httpd.conf a.conf我簡單地用a.confWSGIScriptAlias的確但WSGIScriptAliasMatch不認爲DirectoryIndex的

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/$1.wsgi 
</VirtualHost> 

現在..當我去通過網絡來使用domain.tld ..我沒看到1.wsgi 相反,它是默認的Apache歡迎頁面。

所以看起來像..

WSGIScriptAliasMatch ^/(.*) /a/$1.wsgi 

不支付任何注意

DirectoryIndex 1 

換句話說,通過網絡使用domain.tld/1的作品,但使用domain.tld不..

這是什麼原因造成的?

它是如何

WSGIScriptAlias /1 /a/1.wsgi 

可以解釋爲使用domain.tld使用domain.tld/1中給出的DirectoryIndex的1 但..

WSGIScriptAliasMatch ^/(.*) /a/$1.wsgi 

無法解釋使用domain.tld作爲域名。 tld/1給出了DirectoryIndex 1 ?

一旦我解決了這個問題,我打算確保只有數字1到99被接受並導向到wsgi腳本。

換句話說..使用domain.tld/1(index)來使用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 

in ac onf

這可能不太合邏輯。

所有因爲它與WSGIScriptAlias

做的DirectoryIndex不會與WSGIScriptAliasMatch工作

回答

0

嘗試:

WSGIScriptAliasMatch ^/(.+) /a/$1.wsgi 

你匹配 '/',並將其映射到 '/a/.wsgi'。確保'/'後面至少有一個字符,如果這是您要使用的方案,最好還是確保它們是數字。

WSGIScriptAliasMatch ^/([1-9][0-9]*) /a/$1.wsgi 
相關問題