我需要能够在没有Kohana框架干扰的情况下访问/ admin_dir下的所有内容,因为admin_dir根本不使用该框架。
首先,这是我的.htaccess文件:
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
#Allow the admin page to be accessed
RewriteRule ^/?admin_dir(.*) admin_dir$1 [L]
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
这是Kohana附带的.htaccess文件,减去了admin_dir规则的添加。但是,无论我做什么,我都无法访问admin_dir。我得到一个Kohana异常,说如果我尝试访问/admin_dir/index.php它找不到匹配的路由,或者如果我尝试访问/ admin_dir则找不到URL。
我似乎能够访问admin_dir的唯一方法是注释掉.htaccess的最后一行。 admin_dir不是Kohana框架的一部分,所以我只是想一起绕过它。我在SO上发现了类似的帖子,但没有任何对我的情况有用。
修改 我在admin_dir /中有一个.htaccess文件用于密码保护。内容如下:
AuthType Basic
AuthName "Admin Page"
AuthUserFile "/home/mysite/.htpasswds/public_html/beta/admin_dir/passwd"
require valid-user
在此先感谢您的帮助,这对我来说已经过了太久了!
布赖恩
答案 0 :(得分:1)
显然在我的admin_dir目录中有.htaccess是导致我的问题的原因。我不知道为什么或如何,但在对根.htaccess文件进行少量更改并删除密码保护后,它现在全部正常工作......除了没有密码保护。 :(我想我只需要为它写一个愚蠢的小认证东西。
以下是我们对根.htaccess文件所做的修改:
...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/admin_dir.* [OR]
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
谢谢大家的帮助!
布赖恩
答案 1 :(得分:0)
答案 2 :(得分:0)
以下规则将告诉Apache不要对以admin_dir
RewriteRule ^admin_dir.* - [L]
如果它仍然不起作用(它在我的测试框中确实可以正常工作),请尝试删除前导^
- 它不太准确(因为它也会被some_admin_dir
触发)但是只要admin_dir
在整个网站中是唯一的(没有其他网址有该文本),那么它应该没问题。
<强>更新强>
您可以尝试将其放入/admin_dir
的.htaccess中 - 值得尝试:
RewriteEngine On
RewriteBase /admin_dir/
# stop rewriting if file/folder exist
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]