.htaccess mod_rewrite用于Web服务以及隐藏其他文件

时间:2010-12-30 21:36:15

标签: 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 / 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_alias的新手,需要这个网址:

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

是这样的:

http://127.0.0.1/xmlrpc/v1/

如何做到这一点?

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

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

1 个答案:

答案 0 :(得分:1)

啊mod_rewrite。在xmlrpc目录中尝试:

RewriteEngine On
RewriteRule ^v1/$ xmlrpc.server.php [L]

但有些问题 - xmlrpc.server.php是否接受任何get参数?你能保证网址总是包含一个斜杠吗?

要强制执行尾部斜杠以及其他一些内容,请尝试以下操作:

# 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文件夹中,那么您可以不使用本地主机。

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

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

其他人必须回答其他问题 - 不熟悉。