Apache-2.2

apache2 - 如何從重寫規則中排除別名?

  • June 1, 2018

我在 Debian 上的 Apache2 上設置了 mod_rewrite 和 mod_alias(在測試伺服器中)。

我有以下重寫程式碼/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而不是別名(被繞過/忽略?)。

如何設置排除規則以允許別名通過(即使別名設置在不同的文件中?)

如果您不希望重定向包含“/phpmyadmin/”的 URI,請排除它們:

RewriteCond   %{REQUEST_URI}  !/phpmyadmin/.*

或者只是將您的別名聲明移動到目錄或位置之前

Alias /phpMyAdmin /var/(...)

&lt;Location /&gt;
   RewriteEngine on
   # (...)
&lt;/Location&gt;

順便說一句:使用帶有 url (’/’) 的 Location,而不是 ‘Directory’。

引用自:https://serverfault.com/questions/372115