htaccess не работает правильно с Kohana 3.1.x - PullRequest
1 голос
/ 28 июня 2011

Мне нужно иметь доступ ко всему в / admin_dir без вмешательства фреймворка Kohana, так как 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]

Это файл .htaccess, который поставляется с Kohana, за исключением добавления правила admin_dir.Однако, что бы я ни делал, я не могу получить доступ к admin_dir.Я получаю исключение Kohana о том, что не удается найти соответствующий маршрут, если я пытаюсь получить доступ к /admin_dir/index.php, или что URL не может быть найден, если я пытаюсь получить доступ к /admin_dir.

Единственный способ, которым я могу получить доступ к admin_dir, это закомментировать самую последнюю строку .htaccess.Admin_dir не является частью структуры Kohana, поэтому я просто хочу обойти это все вместе.Я нашел похожие посты на SO по этому поводу, но ничего не подходит для моей ситуации.

Редактировать: У меня есть файл .htaccess в admin_dir / для защиты паролем.Содержание ниже:

AuthType Basic
AuthName "Admin Page"
AuthUserFile "/home/mysite/.htpasswds/public_html/beta/admin_dir/passwd"
require valid-user

Заранее спасибо за вашу помощь, это было занозой на моей стороне слишком долго!

Брайан

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Так что, очевидно, наличие .htaccess в моем каталоге admin_dir и стало причиной моей проблемы.Я не знаю почему или как, но после небольшого изменения корневого файла .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]

Спасибо всем за помощь!

Брайан

0 голосов
/ 28 июня 2011

Правило ниже скажет Apache не делать переписывания URL для URL, начинающихся с admin_dir

RewriteRule ^admin_dir.* - [L]

Если это все еще не работает (здесь у меня хорошо работает на моем тестовом боксе), попробуйте удалить ведущий ^ - он менее точен (так как он также будет срабатывать для some_admin_dir), но пока 1007 * является уникальным для всего веб-сайта (другие URL не имеют такого текста), тогда все должно быть в порядке.


UPDATE: Вы можете попробовать вставить это в свой .htaccess из /admin_dir - стоит попробовать:

RewriteEngine On
RewriteBase /admin_dir/

# stop rewriting if file/folder exist
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
0 голосов
/ 28 июня 2011

комментирует

RewriteRule ^ /? Admin_dir (. *) Admin_dir $ 1 [L]

решить вашу проблему при попытке доступа к http://domain.com/admin_dir/index.php?

...