mod_rewrite не работает для определенного каталога - PullRequest
0 голосов
/ 06 октября 2009

Это парализовало меня на пару дней, и я убежден, что выгляжу глупо, как только решу, но даже глупее, если не обращусь за помощью.

У меня есть 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, и я сам установил его некоторое время назад.

1 Ответ

0 голосов
/ 06 октября 2009

Существует фактор, внешний по отношению ко всему, что вы здесь представляете, который запутывает ситуацию; в частности, что-то вроде Alias или еще чего-нибудь, что могло бы вызвать запросы /two куда-нибудь, кроме ~punkish/Sites/two.

...