Apache的AliasMatch和DirectoryMatch不工作?

我有以下configuration – 请注意别名和目录等效 – 取消注释他们如预期的工作,但基于dynamic/正则expression式的版本不 – 任何想法?

<VirtualHost *:80> ServerName temp.dev.local ServerAlias temp.dev.local DocumentRoot "C:\wamp\www\temp\public" <Directory "C:\wamp\www\temp\public"> AllowOverride all Order Allow,Deny Allow from all </Directory> # Alias /private/application/core/page/assets/images/ "C:/wamp/www/temp/private/application/core/page/assets/images/" # <Directory "C:/wamp/www/temp/private/application/core/page/assets/images/"> AliasMatch ^/private/application/(.*)/(.*)/assets/images/ /private/application/$1/$2/assets/images/ <DirectoryMatch "^/private/application/(.*)/(.*)/assets/images/"> Options Indexes FollowSymlinks MultiViews Includes AllowOverride None Order allow,deny Allow from all </DirectoryMatch> </VirtualHost> 

AliasMatch并没有改变path – 我会猜测这不是意图?

 AliasMatch ^/private/application/(.*)/(.*)/assets/images/ /private/application/$1/$2/assets/images/ 

改成:

 AliasMatch ^/private/application/([^/]*)/([^/]*)/assets/images/ "C:/wamp/www/temp/private/application/$1/$2/assets/images/" 

撇开:我换了.* s以避免匹配,以避免一些无意的命中。

您的DirectoryMatch也包含一个URLpath,而不是文件系统path。 它可能只是:

 <Directory "C:/wamp/www/temp/private/application/"> 

如果你喜欢,你在那里的configuration对于LocationMatch来说是非常有用的。

 <LocationMatch "^/private/application/[^/]*/[^/]*/assets/images/">