Linux .htaccess mod_重写web服务并隐藏其他文件

Linux .htaccess mod_重写web服务并隐藏其他文件,linux,web-services,.htaccess,mod-rewrite,apache2,Linux,Web Services,.htaccess,Mod Rewrite,Apache2,我想我知道如何隐藏文件,但如何使用mod_rewrite只允许在同一目录中调用web服务 下面是目录/文件结构 /var/www/html/xmlrpc/xmlrpc.server.php /var/www/html/xmlrpc/xmlrpc.client.php /var/www/html/xmlrpc/xmlrpc.class.php /var/www/html/xmlrpc/xmlrpc.ini /var/www/html/xmlrpc/logs 重要注意事项:/var/www/htm

我想我知道如何隐藏文件,但如何使用mod_rewrite只允许在同一目录中调用web服务

下面是目录/文件结构

/var/www/html/xmlrpc/xmlrpc.server.php
/var/www/html/xmlrpc/xmlrpc.client.php
/var/www/html/xmlrpc/xmlrpc.class.php
/var/www/html/xmlrpc/xmlrpc.ini
/var/www/html/xmlrpc/logs
重要注意事项:/var/www/html/xmlrpc/logs拥有777权限 在你开始唠叨我之前,我计划把它移到一个非公共目录中,并给予正确的权限。但是有人问我是否可以用.htaccess文件隐藏它

.htaccess

AuthType Basic
AuthName "My hidden files"
AuthBasicProvider file
AuthUserFile /var/www/html/xmlrpc/.pswds
Require valid-user
.pswds

user:5/abcde1abcdE
另外,我是一个使用mod_rewite/mod_别名的新手,需要以下URL:

http://127.0.0.1/xmlrpc/xmlrpc.server.php
为此:

http://127.0.0.1/xmlrpc/v1/
如何做到这一点

另外,在Apache中的虚拟主机设置中,您可以设置日志文件路径/名称,这也可以通过.htaccess文件完成吗


欢迎举例,因为这对我来说也是一次学习经历。

啊,修改。在xmlrpc目录中尝试以下操作:

RewriteEngine On
RewriteRule ^v1/$ xmlrpc.server.php [L]
但有一些问题-xmlrpc.server.php是否接受任何get参数?你能保证url总是包含一个尾随斜杠吗

要强制使用尾随斜杠以及其他内容,请尝试以下操作:

# Allows direct linking to files
RewriteCond %{REQUEST_FILENAME} !-f

#Checks if the url is missing a slash, if so, evaluate rule below
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://127.0.0.1/$1/ [L,R=301]
最后一条规则必须根据放置.htaccess文件的位置进行调整。如果它位于根目录,那么它将适用于所有较低的目录。如果它在xmlrpc文件夹中,那么您可以关闭localhost

还要记住限制对.htaccess文件的访问:

<Files .htaccess>
    order allow,deny
    deny from all
</Files>

命令允许,拒绝
全盘否定

其他人将不得不回答其他问题-对此不太熟悉。

有几个问题:XMLRPC脚本接受参数,但只使用XMLRPC服务,而不是URL,这有关系吗?我还以本地主机为例,生产URL是这样的:我想我知道如何对此进行更改。限制.htaccess文件的最后一个注意事项是,这是可用的默认站点吗?1)我相信参数应该可以。2) 尾部的斜杠检查很容易更改——只需将本地主机替换为生产主机即可。3) 至于限制.htaccess,我不太确定你的问题是什么。该示例是一个文件限制-阻止web浏览器打开.htaccess文件。这将是对公众隐藏其他文件,但只能访问xmlrpc.server.php。最简单的方法是将其他文件放置在web空间之外-只将xmlrpc.server.php文件保留在公共空间中。如果它们绝对必须都在同一个系统目录中,您可以将它们全部放在公共空间之外,然后在公共文件夹中使用一个符号链接来解决这个问题。(/home/user/public_html/xmlrpc/xmlrpc.server.php->/home/user/xmlrpc/xmlrpc.server.php)。PHP包含go by系统路径,而不是url,所以这些应该都可以工作。