我想隐藏在Web浏览器中加载的Python脚本的.py扩展名,并且仍然运行脚本。 例如:在地址栏inputurl.dev/basics/PythonScript会激发PythonScript.py并在浏览器窗口中显示结果。
URL url.dev/basics/PythonScript获取静态文件/PythonScript.py
浏览器仍然显示url url.dev/basics//PythonScript
在url.dev/basics/PythonScript.py打字确实可以工作,并显示Python脚本结果。 我也可以得到mod_rewrite来重写url.dev/basics/PHPscript到url.dev/basics/PHPscript.PHP并在后台成功运行PHP代码。
但是url.dev/basics/PythonScript不会redirect到url.dev/basics/PythonScript.py (我得到一个404 Not Found) 。
背景信息
如何通过.htaccess在URL中允许三个可选参数?
如何激活mod_rewrite?
.htaccess将所有子文件夹内容(有和没有结束斜杠)redirect到相同的子文件夹
Apache mod_rewrite一个子文件夹的子文件夹(通过内部redirect)
获取mod_rewrite传递$ _GET参数?
A) PHP重写工作:位于url.dev/basics/ WORKS for PHP脚本的.htaccess中的以下内容:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /basics/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.PHP -f RewriteRule ^(.*)$ $1.PHP </IfModule>
B) Python重写不起作用:位于url.dev/basics/中的.htaccess中的以下内容不适用于Python脚本(我得到一个404 Not Found) :
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /basics/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.py -f RewriteRule ^(.*)$ $1.py </IfModule>
C)我是通过练习2开始工作的初学程序员:您在Internet软件工程的基础部分中的第一个程序 。 我试图按照build议使用“一个URL =一个文件”,但想使用Python而不是PHP的执行环境。 我意识到,这不是构buildWeb应用程序的最佳方式。 在上面的课程的开始部分,这只是一个惯例。
D)我在OS 10.6 SNow Leopard中设置了虚拟主机开发环境,以便我可以通过adactio.com上的'Hacky Holidays'在url.dev上访问我的开发。 我的Python版本是Python 2.6.1。
E)我打算最终使用Django,但是如果可能的话,首先要处理更简单的代码,这样我可以更好地理解正在发生的事情。
TypesConfig /private/etc/apache2/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddHandler cgi-script .py
和:
LoadModule PHP5_module libexec/apache2/libPHP5.so LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
G)我的Apache版本(在重新启动服务器后在服务器日志中看到): Apache / 2.2.14(Unix)mod_ssl / 2.2.14 OpenSSL / 0.9.8l DAV / 2 PHP / 5.3.1 mod_fastcgi / 2.4.2 configured -恢复正常的操作
期待任何帮助!
XAMPP .htaccess mod_rewrite不工作
Apache mod_rewrite接受语言子域redirect
用于Web翻译的Mod_rewrite .htaccess
我如何忽略mod_rewrite中的目录?
如果你在Linux上运行,不要使用mod-rewrite – 重命名脚本。
你可以调用脚本 – PythonScript不是PythonScript.py
你添加到脚本的第一行,指向你的python解释器
同
chmod +x PythonScript
当文件被执行时,它将读取文件的第一行,并在第一行中执行中间文件
#!/usr/bin/python
然后设置目录来执行脚本
要做到这一点,可以在.htaccess文件中更改目录可执行文件中的文件
basics/.htaccess ----------- Options +ExecCGI SetHandler cgi-script -----------
你的Python脚本将如下所示
basics/PythonScript ------- #!/usr/bin/python print "STATUS: 200 OKnn" print "hello world" ------
警告…您可能会在您的error_log文件中看到类似下面的错误。
[Thu Aug 05 19:26:34 2010] [alert] [client 127.0.0.1] /home/websites/testing/htdocs/basics/.htaccess: Option ExecCGI not allowed here
如果发生这种情况,您的网络服务器不允许您的.htaccess文件进行更改
您的网络服务器将需要允许您的htaccess文件中的更改,所以您可能需要启用httpd.conf文件中的Allowoverride All
<Directory "/"> .... Allowoverride All </Directory>
我找到了解决方案:我需要添加应用程序的MIME类型,以便Apache Web服务器了解它应该运行的代码。
在url.dev/basics/.htaccess中添加:
<Ifmodulee mime_module> AddType application/x-httpd-py .py </Ifmodulee>
别忘了重启Apache: sudo apachectl graceful
它的工作原理! http://url.dev/basics/PythonScript在PythonScript.py中运行代码! 请注意,我不确定这是否是最好的方法,但它的工作原理。
这是我完整的.htaccess文件:
# Options +ExecCGI # SetHandler cgi-script <Ifmodulee mime_module> AddType application/x-httpd-py .py </Ifmodulee> <Ifmodulee mod_rewrite.c> RewriteEngine On RewriteBase /basics/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.py -f RewriteRule ^(.*)$ $1.py </Ifmodulee>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。