Как я могу перенаправить / путь / переменные / переписать в /index.php/path/variables/ в Apache 2.4?

Я недавно обновил свой локальный сервер разработки с Apache 2.2 до Apache 2.4 (через Mac OS X 10.10 Yosemite). Localhost разрешается, как и ожидалось, но следующие настройки виртуального хоста больше не работают (возвращает Not Found - The requested URL /subdir was not found on this server.).

Можете ли вы помочь мне обновить следующее с Apache 2.2 до Apache 2.4?

Цель состоит в том, чтобы перенаправить все каталоги в корень, используя переменные PATH. Например: перенаправление /abc/def/ в /index.php/abc/def/, Индекс один работает нормально. Но /abc/ или же /abc/def/ (или любой подкаталог (путь) больше не работает.

<VirtualHost *:80>
ServerName mylocalsite.local
ServerAlias www.mylocalsite.local mylocalsite_alt.local

<Directory /Users/my_username/Sites/mylocalsite/html>
AllowOverride none
Options all
Require all granted
Deny from none

<IfModule mod_rewrite.c>
Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# Redirect all /img/abc to /img/index.php/abc
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^img/(.*) img/index.php/$1 [L]

# redirect all directories to root using PATH variables
# Ex. /abc/def/ redirects to /index.php/abc/def/
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1 [L]
</IfModule>
</Directory>

DocumentRoot /Users/my_username/Sites/mylocalsite/html
</VirtualHost>

Вы видите, почему это не решается правильно?

Другие отладки:

> ping mylocalsite.local
PING mylocalsite.local (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.115 ms
^C
--- mylocalsite.local ping statistics ---
1 packet transmitted, 1 packet received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.115/0.115/0.115/0.000 ms

> sudo apachectl configtest
Syntax OK

> httpd -S
VirtualHost configuration:
*:80                   is a NameVirtualHost
default server sandbox (/private/etc/apache2/vhosts/virtual_hosts.conf:8)
port 80 namevhost sandbox (/private/etc/apache2/vhosts/virtual_hosts.conf:8)
alias sandbox
port 80 namevhost mylocalsite.local (/private/etc/apache2/vhosts/virtual_hosts.conf:20)
alias www.mylocalsite.local
alias mylocalsite_alt.local
ServerRoot: "/usr"Main DocumentRoot: "/Users/my_username/Sites"Main ErrorLog: "/private/var/log/apache2/error_log"Mutex default: dir="/private/var/run/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex proxy: using_defaults
PidFile: "/private/var/run/httpd.pid"Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="_www" id=70 not_used
Group: name="_www" id=70 not_used

2

Решение

Убедитесь, что следующие строки не закомментированы в вашем httpd.conf:

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule php5_module libexec/apache2/libphp5.so
LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
Include /private/etc/apache2/extra/httpd-vhosts.conf

# restart apache
1

Другие решения

Других решений пока нет …