Это парализовало меня на пару дней, и я убежден, что выгляжу глупо, как только решу, но даже глупее, если не обращусь за помощью.
У меня есть mod_rewrite, успешно работающий на моем локальном хосте (без участия vhosts; это мой ноутбук, моя машина для разработки), и я использую .htaccess в различных каталогах, чтобы помочь переписать грубые URL-адреса для очистки. КРОМЕ ... не работает в одном каталоге. Поскольку в этом вопросе невозможно воспроизвести весь мой ноутбук, я предоставлю следующую информацию.
В моем httpd.conf я загрузил mod_rewrite.so.
LoadModule rewrite_module modules/mod_rewrite.so
В моем httpd.conf я включил еще один conf-файл, например,
Include /usr/local/apache2/conf/other/punkish.conf
В моем punkish.conf у меня есть каталоги, определенные так
DocumentRoot "/Users/punkish/Sites"
<Directory "/Users/punkish/Sites">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/Users/punkish/Sites/one">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Directory "/Users/punkish/Sites/two">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
В ~ / Sites / one у меня есть следующий файл .htaccess
RewriteEngine On
RewriteBase /one/
# If an actual file or directory is requested, serve directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise, pass everything through to the dispatcher
RewriteRule ^(.*)$ index.cgi/$1 [L,QSA]
и все работает отлично. Однако в моем каталоге ~ / Sites / two у меня есть следующий файл .htaccess
RewriteEngine On
RewriteBase /two/
# If an actual file or directory is requested, serve directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise, pass everything through to the dispatcher
RewriteRule ^(.*)$ index.cgi/$1 [L,QSA]
и ничего не работает. Нада. Zip. Шиш. Я просто получаю 404. Я определил, что mod_rewrite даже не смотрит на мой ~ / Sites / two / .htaccess, поместив в него ложные команды и не получив никаких ошибок, кроме 404.
Еще одна проблема - я включил RewriteLog в моем httpd.conf с помощью RewriteLogLevel 3, но мой rewrite_log полностью пуст. Я знаю, что трудно стрелять из проблем, если не сидеть физически за компьютером, о котором идет речь, но я надеюсь, что кто-то может дать мне некоторое представление о том, что происходит.
** Обновление: ** Псевдонимы нигде не используются. Это мой ноутбук, и все находится под указанным выше корневым каталогом документов, поэтому я просто обращаюсь к каждому каталогу как http://localhost/. Да, опечатки - большая вероятность (я действительно говорил, что выгляжу глупо, как только решу это, однако на данный момент я нигде не обнаружил ни одной опечатки, и да, я перезапускал Apache уже около десятка раз. Я даже подумал, что, возможно, у меня работает два разных Apache, но нет, у меня есть только один, тот, который находится под / usr / local / apache2, и я сам установил его некоторое время назад.