2013-05-03 2 views
2

У меня есть сервер, работающий со следующей структурой:.htaccess перенаправляет все адреса, кроме одного

/public_html 
    | - /fingertools 
    | - /css 
    | - /static 
    | - /media 
    | - /js 
    | - .htaccess 

Мой .htaccess находится в корне папки «public_html», и основные файлы на сайте, в папке «fingertools», которая является проектом Django.

Я хочу переписать через .htaccess все запросы http://mydomain.com/ в папку «fingertools», за исключением того, что любой файл внутри http://mydomain.com/static/ должен быть перенаправлен в «статическую» папку.

Я не могу этого сделать, мне нужно, чтобы все CSS и JavaScript помещались в эту папку для работы сайта.

меня это до сих пор:

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !(fingertools) 
RewriteRule ^(.*)$ fingertools/$1 [L] 

который перенаправляет меня к моему проекту Django, давая мне ошибку 404 для не имеющих/статический/URL отображенный в файле urls.py. Есть идеи? Большое спасибо

+1

Не делайте этого. Django не предполагается размещать в папке DocumentRoot. Вы должны сопоставлять '/ static /' folder * mapping * с запросами, но остальная часть приложения/сайта должна быть открыта каким-либо другим способом, например. как приложение 'wsgi' – J0HN

ответ

4
Options +FollowSymlinks 

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_URI} !^/(fingertools|static)(/|$) 
RewriteRule ^(.*)$ fingertools/$1 [L,QSA] 
+0

Регулы - это жадность, поэтому' fingertools | static' будет соответствовать 'fingertool (s | s) tatic', а не' (fingertools) | (static) ', и это не сработает. Если у apache нет нерегулярных регулярных выражений, я никогда об этом не слышал. – J0HN

+1

@ J0HN Оператор regex '|' работает как '(fingertools) | (статический)', а не 'fingertool (s | s) tatic'. Это относится не только к Apache. «Жадный» означает нечто совершенно иное. – Zenexer

+0

Правильно, мой плохой :) – J0HN

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