当前位置:  开发笔记 > 编程语言 > 正文

.htaccess的公共目录

如何解决《.htaccess的公共目录》经验,为你挑选了1个好方法。

我在index.php中有一个调度函数,所以URL如:

/ blog/show转到

/index.php/blog/show


    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

我如何修改它,以便我可以将所有静态文件转储到公共目录中,但在URL中不公开访问它们.

例如/docs/lolcats.pdf访问

驱动器上的/public/docs/lolcats.pdf

我试过这个

RewriteCond %{REQUEST_FILENAME} !f
RewriteRule ^(.*)$ public/$1 [QSA,L]

Gumbo.. 14

试试这个:

RewriteCond %{DOCUMENT_ROOT}public%{REQUEST_URI} -f
RewriteRule !^public/ public%{REQUEST_URI} [L]

如果要在根目录下的子目录中使用它:

RewriteCond %{REQUEST_URI} ^/subdir(/.*)
RewriteCond %{DOCUMENT_ROOT}subdir/public%1 -f
RewriteRule !^public/ public%1 [L]

我找到了另一个没有明确命名子目录的解决方案:

RewriteRule ^public/ - [L]
RewriteCond public/$0 -F
RewriteRule .* public/$0 [L]

重要的变化是使用-F而不是-f前者触发子请求.



1> Gumbo..:

试试这个:

RewriteCond %{DOCUMENT_ROOT}public%{REQUEST_URI} -f
RewriteRule !^public/ public%{REQUEST_URI} [L]

如果要在根目录下的子目录中使用它:

RewriteCond %{REQUEST_URI} ^/subdir(/.*)
RewriteCond %{DOCUMENT_ROOT}subdir/public%1 -f
RewriteRule !^public/ public%1 [L]

我找到了另一个没有明确命名子目录的解决方案:

RewriteRule ^public/ - [L]
RewriteCond public/$0 -F
RewriteRule .* public/$0 [L]

重要的变化是使用-F而不是-f前者触发子请求.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有