2016-12-27 4 views
1

У меня есть структура документа, в которой у меня есть файл .htaccess в родительском каталоге с именем Fort. В этом же каталоге у меня есть папка с именем public. У меня есть в этом public каталоге bootstrap.php скрипт..htaccess переписать корневой каталог запрещен

Вот мой .htaccess код:

RewriteEngine On 

RewriteBase /Fort 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.+)$ bootstrap.php?url=$1 [QSA,L] 

Я использую MAMP и URL по умолчанию устанавливается в localhost:8888/Fort/.

Мой bootstrap.php скрипт этот код:

<?php 

echo $_GET['url']; 

По какой-то причине, когда я прохожу URL сказать localhost:8888/Fort/foo/bar, мой bootstrap.php скрипт возвращает URL как foo/bar. Но если я передаю url localhost:8888/Fort/, я получаю ошибку 403 Forbidden, а сценарий bootstrap.php не загружен.

ответ

3

Хороший вопрос! Спасибо за всю информацию.

Изменение последней строки к этому:

RewriteRule ^(.*)$ bootstrap.php?url=$1 [QSA,L] 

При посещении /Fort/ есть пустая строка для переписан, чтобы соответствовать, и вы соответствие + что означает один или несколько символов, когда есть на самом деле нет символов, поэтому он не запускался. Изменение на * говорит о нулевом или более символах, что устраняет проблему и теперь будет соответствовать /Fort/, как и ожидалось.

+0

Теперь, когда я использую этот код, нет ошибки, но вместо этого я просто получаю обычный корневой каталог Apache. Как я могу исправить это, так что скрипт 'bootstrap.php' может повторить что-то? –

+0

Попробуйте удалить строку 'RewriteCond% {REQUEST_FILENAME}! -d'. И, пожалуйста, примите мой ответ, поскольку он исправил ошибку, о которой вы просили. – SuperDuperApps

+0

@ user249325 Это исправлено! Благодаря! –

Смежные вопросы