【问题标题】:how to read source by RewriteRule [duplicate]如何通过 RewriteRule 读取源代码 [重复]
【发布时间】:2013-02-19 01:35:01
【问题描述】:

我需要帮助解决这个问题

这个命令不好用,你能帮帮我吗

我的网站上有这个名称下的新文件夹

“文本PHP”

我把这段代码放在 .htaccess 中

重写规则 ^(.*) /home/myhome/public_html/$1.php [L,T=text/plain]

我希望任何人去那个文件夹都可以从我的 php 文件中读取任何源代码

这行不通

我试试 H=text/plain

我收到错误 500

我也试试 php_value 引擎关闭 php_value 引擎关闭

不工作:(

还有什么技巧

对不起,我的英语太糟糕了:p

感谢您的帮助

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    您没有在重写规则中指定文件的完整路径,您指定的是新的绝对 URL 或相对于 Web 根目录的 URI。因此,如果您想让任何 URI 转到同名的 PHP 文件,您可以这样做:

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

    此处无需指定/home/myhome/public_html

    这是一个基本示例,但通常情况下,这是一个过于宽泛的规则,因为它会阻止您从 Web 根目录提供图像或其他实际文件(它们最终都会附加 .php因此,假设这实际上是您想要的,您通常会看到如下内容:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*) /$1.php [L]
    

    此规则适用于 URI 与实际文件名或目录不匹配的情况。因此对/some_file.php 的请求不会被重定向到/some_file.php.php

    【讨论】:

    • 也不起作用:(我的网站 example.com 和我有很多 php 文件,如果访问 example.com/source/FileName.php 读取 example.com/FileName 的源,我想要。 php作为文本文件
    【解决方案2】:

    您可以配置您的网络服务器以显示*.phps 文件的来源(例如,制作符号链接):

    AddType application/x-httpd-php-source .phps
    

    或完全禁用该目录的 PHP 处理:

    RemoveHandler .php 
    RemoveType .php
    

    替代或附加:

    php_flag engine off
    

    在某些设置(cgi / fastcgi)甚至:

    Options -ExecCGI
    

    如果您想使用 mod_rewrite,则编写一个包装脚本以通过 readfile() 显示它们(以及一些 basename() 过滤以确保安全)并将其应用如下:

    RewriteRule ^(.+\.php)$ showsrc.php?file=$1
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    相关资源
    最近更新 更多