2016-06-08 2 views
0

У меня есть приложение Silex и я получаю запросы как это: https://.../dev/foo/bar и хотите переписать их https://.../index.php/foo/barИгнорировать определенную часть URL с помощью mod_rewrite

... «Тогда как» может быть что угодно, от «WWW. asd.com "в" localhost/~ asd/folder ".

Мой .htaccess файл находится на веб-корень, https://.../

Это нормальный mod_rewrite установки я использую:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [QSA,L] 

Моя наивная попытка путем установки RewriteBase не удалось:

RewriteEngine On 
    RewriteBase /dev 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 

Там я получаю ошибку

Forbidden 

You don't have permission to access /dev/index.php on this server. 

Кроме того, только перезапись не удалось:

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

Как ни странно, это не просто пропустить Dev часть, но он пытается получить доступ к/DEV/Foo/бар вместо желаемого/Foo/бар.

Любой ключ?

+0

Где находится ваш .htaccess? – anubhava

+0

Привет, я добавил его к вопросу. – Philip

+0

Возможно, измените его на 'RewriteRule^dev /(.+)/? index.php? url = $ 1 [QSA, L] 'и использовать' $ _GET ['url'] 'для доступа к запрошенному пути. –

ответ

0

Я нашел решение для меня, комбинируя mod_alias и mod_rewrite, как это, RewriteBase работает сейчас:

Alias /dev /app/web 
<Directory /app/web> 
    Options -MultiViews 

    RewriteEngine On 
    RewriteBase /dev 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 
</Directory>