Подход к минимизации dir-hardcoding в RewriteRule, который работает из корня и подпапок - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть этот проект, который я запускаю локально из корня веб-сервера.Это школьный проект, поэтому он будет развернут на серверах моей школы, которые требуют, чтобы я поместил его в подпапку.Это вызывает проблемы с перенаправлениями static + css, потому что они явно не работают так, как написано сейчас при запуске из подпапки, и я не хочу жестко кодировать каждое правило перезаписи в подпапку, потому что это уродливо, изатрудняет переключение на использование его запуска от root, если мне это нужно.

В проекте есть следующие правила в .htaccess.

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{THE_REQUEST} ^GET\ /static/
RewriteRule ^static/(.*) /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^GET\ /css/
RewriteRule ^css/(.*)$ static/css/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Есть ли подход, который позволяет мне получитьвышеизложенное переписывает для работы из корня и подпапки без вопросов, или способ, который делает разницу минимальной?(где мне не нужно жестко кодировать подпапку в каждом правиле)

1 Ответ

1 голос
/ 08 февраля 2012

, как я это вижу (при условии, что .haccess также находится в подпапке)

Options +FollowSymlinks
RewriteEngine On

#you might need a rewritebase, but not necessarily 
#testing
#RewriteBase /
#production
#RewriteBase /subfolder

#less strict condition. will only be a problem if there is another folder also named 'static' inside 'static' :-)
RewriteCond %{THE_REQUEST} /static/
RewriteRule ^static/(.*) $1 [L,R=301]

#condition here is not needed
RewriteRule ^css/(.*)$ static/css/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...