Подстановочные знаки с Apache Directory и RewriteRule?

Я пытаюсь заставить FuelPHP работать на моем сервере. У меня нет доступа к файлу .htaccess для RewriteRule. Однако мой хост позволил мне указать часть файла httpd.conf.

Следующие работы для того, что я хочу:

<Directory /Applications/XAMPP/xamppfiles/htdocs/sandbox/username/public>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</Directory>

Однако мне нужно, чтобы он работал не только для «имени пользователя». Как я могу использовать подстановочные знаки с этим каталогом, чтобы он работал для любых значений «имя пользователя» для одноразового решения?

Я нашел этот совет в руководстве по Apache, но я не знаю, как заставить его работать с RewriteRule.

Пробовал следующее, но это не сработало:

<Directory /Applications/XAMPP/xamppfiles/htdocs/sandbox/*/public>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</Directory>

Пожалуйста, помогите!


person Nate Radebaugh    schedule 08.02.2012    source источник


Ответы (2)


Вы были близки с руководством Apache:

<Directory /Applications/XAMPP/xamppfiles/htdocs/sandbox/*/public>

to

<Directory ~ "/Applications/XAMPP/xamppfiles/htdocs/sandbox/.*/public">
person vol7ron    schedule 04.10.2012
comment
можете ли вы сказать, что не так в этом синтаксисе. Я получаю запрещенное сообщение: Псевдоним /salt /var/cache/salt/master/minions/.*/files ‹Каталог ~ /var/cache/salt/master/minions/.*/files/› Параметры MultiViews FollowSymLinks Требовать все предоставленные ‹ /Каталог› - person Himanshu Jain; 17.08.2016

Мы нашли это сообщение, касающееся проблемы, которая у нас была, без реального решения: Как использовать apache2 mod_rewrite в директиве каталога, которая использует подстановочные знаки?

В итоге мы использовали следующее решение:

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d

RewriteRule ^(/sandbox/([^/]*)/public/.*)$ /sandbox/$2/public/index.php?$1 [PT,QSA]

Необходимо было добавить «PT», поскольку он обычно подразумевается в блоках каталогов, и говорит ему рассматривать целевой путь как URI, а не как путь к файлу (что не будет работать, поскольку он не получает полный локальный путь) . Флаг QSA просто гарантирует, что ваш index.php получит всю исходную информацию.

person Nate Radebaugh    schedule 09.02.2012