ARRW - еще один RewriteRule интересно - PullRequest
0 голосов
/ 12 октября 2011

Прошу прощения за это, так как было много случаев такого вопроса, но я не могу ответить.

Запрос

В проекте Symfony2 я хочу получить доступ к страницамне имея php-контроллера в URL, например:

# This is the present use :
GET /af/index.php/myURI HTTP/1.1
OK

~

# And this is the wanted use :
GET /af/monURI HTTP/1.1

Но я получаю ошибку 404, либо по умолчанию .htaccess, либо с собственной версией.

.htaccess

По умолчанию .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

Я изменил это следующим образом:

<IfModule mod_rewrite.c>
    RewriteEngine On
#    RewriteBase /af
#    Options +FollowSymLinks
# Isn't the request for a regular file ?
     RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

Структура каталогов

Вотмоя структура каталогов:

/var/www/af
         ├── app
         ├── bin
         ├── src
         ├── vendor
         └── web
             ├── app_dev.php
             ├── apple-touch-icon.png
             ├── bundles
             ├── config.php
             ├── favicon.ico
             ├── .htaccess
             ├── index.php
             └── robots.txt

Я динамически связывал веб / каталог с / var / www / af

Редактировать - я нашел this :

При использовании механизма перезаписи в файлах .htaccess префикс для каждого каталога (который всегда одинаков для определенного каталога) автоматически удаляется для шаблона RewriteRuleсопоставление и добавление автоматически после любой относительной (не начиная с косой черты или имени протокола) подстановкиUnters конец набора правил.См. Директиву RewriteBase для получения дополнительной информации о том, какой префикс будет добавлен обратно к относительным подстановкам.

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Не изменяйте правила файла .htaccess.

Если у вас есть доступ к файлам конфигурации веб-сервера (т. Е. Локальному разработчику или виртуальной машине), вам нужно добавить правило VirtualHost в httpd.conf.Примерно так:

<VirtualHost *:80>
    DocumentRoot "/var/www/af/web"
    ServerName af
    <directory "/var/www/af/web">
        Options Indexes FollowSymLinks
        AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
    </directory>
</VirtualHost>

Если у вас нет доступа к файлам конфигурации веб-сервера (т. Е. К хостингу), то вам нужно иметь папку web, связанную как папка общего доступа (иногда называемая * 1008).*)

0 голосов
/ 14 октября 2011

Проблема решена благодаря Mac : в корне моего документа не разрешены переопределения для htaccess.

...