Перезапись URL (Apache) скрыть папку - PullRequest
2 голосов
/ 24 марта 2011

У меня возникли проблемы при переписывании URL-адреса веб-сайта.

Структура папок, которую я получил, в основном

public_html
 -farms
   -public
   -functions

Итак, я хочу, чтобы URL-адреса были такими:

www.site.com / farms / public / pageInPublicFolder.php INTO www.site.com/farms/pageInPublicFolder.php

Поэтому, если я делаю что-то вроде site.com/farms/index.php, он должен взять индексный файл, который находится в общей папке, но скрыть тот факт, что он находится в общей папке, от URL.

Просматривая другие темы здесь на сайте, я нашел следующий код:

RewriteEngine On
RewriteRule ^/(.*)$   /public/$1

Я поместил приведенный выше код в файл .htaccess в папке фермы, однако я просто получаю 404, пытаясь получить доступ к любому из файлов. Любая помощь?

1 Ответ

0 голосов
/ 24 марта 2011

Во-первых, всякий раз, когда вы используете RewriteRule в .htaccess, соответствующая строка никогда не начинается с символа косой черты.Итак, ваше правило никогда не совпадает.

Однако после этого вам нужно убедиться, что вы не продолжаете применять правило рекурсивно, потому что все правила запускаются снова после перезаписи (по крайней мере в контексте для каждого каталога)).Итак, что вы на самом деле хотите, это что-то вроде:

RewriteEngine on
RewriteBase /home/yourdirectory/public_html

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

Дважды проверьте, работает ли это в вашем сценарии, и если нет, опубликуйте ошибку в вашем журнале Apache, чтобы я мог помочь исправить ее, если выкак.

...