mod_rewrite в каталоге Users / <username>/ Sites на OSX - PullRequest
0 голосов
/ 30 марта 2012

Возможно, это довольно простое решение, но я искал пару дней и не могу его найти, оооочень ...

Я занимаюсь разработкой веб-сайта на ОСХ коробка (Лев).Рабочий сайт находится в / Users / username / Sites, и я добавил этот каталог в /etc/apache2/users/username.conf.Я могу просматривать страницы без проблем.

НО ... Я использую CodeIgniter и хочу удалить index.php из URL.Это должно быть довольно простой задачей для mod_rewrite.Я добавил файл .htaccess в каталог (и установил AllowOverride All в моем файле конфигурации выше).После поисков в поисках я обнаружил, что мне нужно установить Options + FollowSymLinks (я сделал это в файле .htaccess).

Проблема в том, что он, кажется, переписывает URL-адрес с localhost / ~ username / to / Users /имя пользователя / Sites.Проблема заключается в том, что в этой форме браузер просто пытается ЗАГРУЗИТЬ файл index.php, а не выполнять его.Это ухудшается, когда ссылки /Users//Sites/index.php/controller/function, потому что эти файлы не существуют ... CodeIgniter предназначен для вступления во владение в index.php, но только если он выполняется.

Так что я не могу удалить Options + FollowSymLinks, потому что это приводит к ошибкам Access Forbidden, и я не могу оставить это по причинам, указанным выше.Каталог / Library / WebServer / Documents работает нормально.OS X, кажется, не возражает FollowSymLinks к этому каталогу, вероятно, потому что это установлено как DocumentRoot в httpd.conf

Мой httpd.conf - фондовый Lion, за исключением AllowOverride All на / Library / Webserver / Documents,mod_rewrite включен.

Мой username.conf:

<Directory "/Users/username/Sites/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Мой файл .htaccess в каталоге сайта:

Options +FollowSymLinks
RewriteEngine on
RewriteCond $1 !^(index\.php|static|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

Очевидно, я могу разработать в / Library/ WebServer / Documents, но я бы предпочел сделать это в моих локальных файлах.

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

На веб-сайте CodeIgniter есть отличная вики-страница о mod rewrite , которая охватывает все изменения, которые необходимо внести в ваш файл .htaccess и в сами файлы CodeIgniter.

Легко забыть изменить значения в вашем конфигурационном файле, такие как index_page, с:

$config['index_page'] = "index.php";

на

$config['index_page'] = "";

Пример файла .htaccess, показанного на этой вики-странице: (Я удалилкомментарии):

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

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

И если вы обнаружите, что вам нужно, просто добавьте в него свойства AddType и Options.

1 голос
/ 30 марта 2012

Здесь некоторые уловки могут быть полезны

AddType application/x-httpd-php .php

Options +FollowSymLinks

RewriteEngine   on
RewriteBase  /Users/username/Sites/

RewriteEngine on
RewriteCond $1 !^(index\.php|static|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

Также вы можете войти в журнал переписывания.Но предлагаю вам убрать эти строки, после того как вы все исправите

 RewriteLog "/var/log/httpd/rewrite_log" 
 RewriteLogLevel 9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...