澄清htaccess文件的使用

时间:2014-04-16 20:24:27

标签: php apache .htaccess mod-rewrite redirect

我刚刚开始使用.htaccess文件,因为我在共享主机上。我试过谷歌:很多关于创建一个.htaccess文件,很少关于在哪里,有多少,做规则级联等等。

这是我网站的地图:

/www.mysite.com
|
|   .htaccess 
|   index.php
|   
+---includes
|         config.php
|         functions.php
|         some.class.php
|         database.class.php
|
\---public
    |   .htaccess
    |   index.php
    +---css
    |       
    +---js
    |       
    +---images 
    |       
    +---admin
          index.php       

我正在将将网站根目录(www.mysite.com)重定向到位于根目录的.htaccess文件中的公用文件夹的规则。

RewriteEngine On
RewriteBase / public

在位于公共文件夹中的.htaccess文件中,我将从URL中删除“/ public /”的规则(www.mysite.com/public/index.php ==> www.mysite的.com / index.php的)。

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule (.*) /public/$1

我还有以下代码来限制对.htaccess文件本身的访问,并拒绝ditectory列表以及拒绝机器人,设置缓存选项,时区等的其他(更长)代码。

否认所有人 选项-Indexes -Multiviews

我只需要将它放在root .htaccess文件中(它是否像css一样涓流)?是否必须进入公共文件夹.hyaccess文件?

我的所有文件夹(包括,js等)中是否需要.htaccess文件?

在include文件夹.htaccess文件中我输入代码:

<Files config.php>
Order Deny,Allow
Deny from all
</Files>

这是正确的地方吗?

最后我将用密码保护admin / index.php .htpasswd和.htaccess文件。这是我将添加/删除用户的地方。

非常感谢任何其他建议。

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

您的/.htaccess将始终被处理,然后沿着该行返回到感兴趣的目录(例如,脚本运行的位置),每个.htaccess依次处理。通常,无论在更高级别设置或完成什么.htaccess都由较低级别的.htaccess文件继承(非常类似于CSS)。可能有例外,但我现在无法提出任何例外。

密码保护时,通常是整个目录及其下的所有内容。密码保护单个文件可能是可能的,但我还没有听说过。这些文件可以受.htaccess中的访问控制保护。

当目录从上面继承其.htaccess定义的设置/保护时,如果要添加或覆盖设置,则只需要该目录中的.htaccess文件。例如,您可能有Options -Indexes或其他内容,但希望访问者列出该目录的.htaccess中具有Options +Indexes的特定目录(以及所有子项)的内容。

RewriteEngine On
RewriteBase / public

我不确定你在这里要做什么。我只看过一条路径的RewriteBase。

  

在位于公用文件夹中的.htaccess文件中,我将规则放在那里   从URL中删除“/ public /”(www.mysite.com/public/index.php ==&gt;   www.mysite.com/index.php)。

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule (.*) /public/$1

咦? 真正的目录包含/ public,因此您想要重写传入非公共URI以包含公共(即添加它)?如果这是你的意图,你的代码看起来很好。