.htaccess不允许子目录工作

时间:2012-04-30 04:47:13

标签: php .htaccess directory

这是.htaccess文件

RewriteEngine on
RewriteCond $1 !^(index\.html|index.php|administrator|system|template|js|lib|favicon\.ico|robots\.txt)
RewriteRule ^(.*)$ /index.html?tpl=$1 [L]


Options +FollowSymlinks

然而,发生的事情是以下所有文件夹都不允许我进入它们并查看PHP文件。

|administrator|system|template|js|lib

我想通过将文件放在RewriteCond中,它允许用户仍然转到http://example.com/news/happy,然后转到index.php?tpl = etc等,但它阻止了我进入任何子目录,如

http://example.com/system/index.php

2 个答案:

答案 0 :(得分:1)

我不知道这是否适合你。但我所做的是添加此规则以加载对任何.php文件的调用而不使用.php结尾。无论是否结束,你都可以同时打电话。

例如,您可以拨打my_url.com/myfolder/myfile,然后使用友好的网址加载myfile.php

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

答案 1 :(得分:0)

我想建议您先阅读mod重写

1 - 将该行放在顶部

 Options +FollowSymlinks

该行要求您的服务器遵循符号链接,但我建议您使用更安全的选项" SymLinksIfOwnerMatch"

来源:

http://httpd.apache.org/docs/2.2/mod/core.html#options#FollowSymLinks

RewriteEngine on

启用或禁用运行时重写引擎

来源: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteengine

 RewriteCond $1 !^(index\.html|index.php|administrator|system|template|js|lib|favicon\.ico|robots\.txt)

你走了。该规则要求Web服务器添加重写条件以忽略正则表达式中列出的所有内容

我也为你添加了正则表达式解释

 ! 

不相等      ^ 从

开始
 RewriteRule ^(.*)$ /index.html?tpl=$1 [L]

您要求将所有其他内容写入index.html?tpl = $ 1 **我认为你的意思是index.php我将假设你不需要查询字符串

我想建议使用更好的方法来处理排除

 RewriteEngine On
 Options +FollowSymLinks
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_URI} !(index\.html|index.php|administrator|system|template|js|lib|favicon\.ico|robots\.txt)
 RewriteRule ^(.*)$ /index.html?tpl=$1 [L]