Назад | Перейти на главную страницу

apache2 - как исключить псевдоним из правил перезаписи?

У меня установлены mod_rewrite и mod_alias на Apache2 на Debian (на тестовом сервере).

У меня есть следующий код перезаписи в /etc/apache2/sites-available/default:

<Directory />
  Options FollowSymLinks
  AllowOverride All
  RewriteEngine on
  RewriteCond %{REQUEST_URI} !\.(php|html|css|js|gif|png|jpe?g)$
  RewriteRule (.*)$ /index.php [L]
</Directory>

У меня есть следующий код псевдонима, который по умолчанию устанавливается из пакета phpmyadmin (загружается через apt-get install phpmyadmin и расположен в /etc/apache2/conf.d/phpmyadmin.conf):

Alias /phpmyadmin /usr/share/phpmyadmin

Каждый раз, когда я загружаю http: //my.test.server/phpmyadmin, это идет в http: //my.test.server/index.php а не псевдоним (который пропускается / игнорируется?).

Как настроить правило исключения, чтобы разрешить прохождение псевдонимов (даже если псевдоним настроен в другом файле?)

Исключите URI, содержащие "/ phpmyadmin /", если вы не хотите, чтобы они перенаправлялись:

RewriteCond   %{REQUEST_URI}  !/phpmyadmin/.*

Или просто переместите объявление своего псевдонима перед Directory или Location

Alias /phpMyAdmin /var/(...)

<Location />
    RewriteEngine on
    # (...)
</Location>

К слову, используйте Location с url ('/'), а не 'Directory'.