簡體   English   中英

如何從我的網址中隱藏“cgi-bin”,“。py”等?

[英]How to hide “cgi-bin”, “.py”, etc from my URLs?

全新的網頁設計,使用python。 啟動Apache並運行,測試在cgi-bin目錄下運行的python腳本。 當我明確輸入網址時獲得有效結果:“... / cgi-bin / showenv.py”

但我不希望URL看起來那樣。 例如,在stackoverflow中,顯示在我的地址欄中的URL永遠不會有雜亂的細節顯示用於運行它們的腳本。 他們沒有cgi-bin,.py等擴展。 我怎么做?

編輯:感謝您的回復,每一個都很有幫助,很多東西要學習。 我現在正在使用URL重寫; 文檔中的示例看起來非常接近我實際想要做的事情。 但是我致力於python,因此將不得不關注WSGI。

編寫Web應用程序的python方式不是cgi-bin。 這是通過使用WSGI

WSGI是Web服務器和Python Web應用程序或框架之間的標准接口。 PEP 0333對其進行了定義。

使用它代替CGI沒有缺點。 你會獲得很多。 美麗的網址只是您可以輕松完成的一件巧妙的事情。

此外,編寫WSGI應用程序意味着您可以在支持WSGI接口的任何Web服務器上進行部署。 Apache通過使用mod_wsgi來實現

您可以在apache中配置它:

WSGIScriptAlias /myapp /usr/local/www/wsgi-scripts/myapp.py

然后, http://myserver.domain/myapp上的所有請求都將轉到myapp.py的application可調用,包括http://myserver.domain/myapp/something/here

示例myapp.py

def application(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/plain')])
    return ['Hello World!']

我認為你可以通過Apache配置重寫URL來實現這一點。 您可以在此處查看Apache文檔以進行重寫。

您必須使用URL重寫。

這不是一個菜鳥問題,它可能相當棘手:)

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

希望你覺得它有用

只需使用一些優秀的Web框架,例如django,您可以擁有比URL更多的URL,您將擁有更好的基礎架構,模板,db orm等

這是我用來實現這種事情的.htaccess的摘錄,這例如將所有不是index.php的請求重定向到該文件,當然你必須檢查你重定向的文件中的服務器變量要看,請求了什么。

或者你只是制作一個重寫規則,你可以使用像^.*\\/cgi-bin\\/.*\\.py$這樣的RegExp來確定重寫的時間和內容。 必須非常仔細地制作這樣的RegExp,以便只在需要時進行重寫。

<IfModule mod_rewrite.c>
    RewriteEngine On   #activate rewriting
    RewriteBase /      #url base for rewriting
    RewriteCond %{REQUEST_FILENAME} !index.php #requested file is not index.php
    RewriteCond %{REQUEST_FILENAME} !^.*\.gif$ #requested file is no .gif
    RewriteCond %{REQUEST_FILENAME} !^.*\.jpg$ #requested file is no .jpg
    RewriteCond %{REQUEST_FILENAME} !-d        #is not a directory
    RewriteRule . /index.php [L]               #send it all to index.php
</IfModule>

上面的例子使用RewriteCond itions來確定何時重寫(.gif,.jpeg和index.php被排除在外)。

嗯,這已經很久了。 希望它有點幫助,但你將無法避免學習Apache RewriteEngine的語法。

您會發現ScriptAlias指令ScriptAlias用。 運用

ScriptAlias /urlpath /your/cgi-bin/script.py

您可以通過http://yourserver/urlpath訪問您的腳本。

您也可能想查看mod_passenger ,雖然上次我使用它時,WSGI在庫中是一種“二等公民” - 它可以檢測WSGI腳本,如果它用於服務整個域,但除此之外沒有指令讓它運行WSGI應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM