我刚刚开始使用.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文件。这是我将添加/删除用户的地方。
非常感谢任何其他建议。
提前谢谢你。
答案 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以包含公共(即添加它)?如果这是你的意图,你的代码看起来很好。