在Apache中创建动态别名?

vom3gejh  于 2023-10-23  发布在  Apache
关注(0)|答案(1)|浏览(157)

我正在寻找一个解决方案,以创建一个由子域名确定的服务器上的不同路径的别名。文件夹位于文档根目录后面的位置。
如何让http://*.site.com/images/指向/var/www/site/clients/*/images/
例如:

  1. Alias /images "/var/www/site/clients/$(var)/images/"

(请注意,我没有考虑将文档根目录更改为/var/www/site/clients/*/。

  1. <VirtualHost *.domain.tld:80>
  2. ServerName *.domain.tld
  3. DocumentRoot "/var/www/site/public_html"
  4. <Directory "/var/www/site/public_html">
  5. Options -Indexes
  6. DirectoryIndex index.php index.html
  7. AllowOverride All
  8. </Directory>
  9. Alias /images "/var/www/site/clients/*/images"
  10. </VirtualHost>

尝试#1 -失败,出现404:

  1. RewriteCond %{HTTP_HOST} ^([^.]+)\.
  2. RewriteRule ^/images/(.*)$ /var/www/site/clients/%1/images/$1 [L]

尝试#2 -失败,出现404:

  1. SetEnvIf Host "^([^.]+)\." SUBDOMAIN=$1
  2. Aliash /images /var/www/site/clients/%{env:SUBDOMAIN}/images
fjaof16o

fjaof16o1#

我想出了这个,它有一些动态,并在. htaccess级别上运行:

  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. # Web path to application root
  4. RewriteBase /
  5. # Set environment variables, also fetchable in PHP e.g. $_SERVER['CLIENT']
  6. SetEnvIf Host "^(.*)\.domain\.tld$" CLIENT=$1 APP_VERSION=1.0.0
  7. # Map some storage content to root, based on environment variable
  8. RewriteRule ^(storage/.*)$ clients/%{CLIENT}/$1 [QSA,L]
  9. # Forbid access to the other directories
  10. RewriteCond %{ENV:REDIRECT_STATUS} ^$
  11. RewriteRule ^clients/ - [F,R=404,L]
  12. # No rewrite logic for physical files
  13. RewriteCond %{REQUEST_FILENAME} -d [OR]
  14. RewriteCond %{REQUEST_FILENAME} -f [OR]
  15. RewriteCond %{REQUEST_FILENAME} -l
  16. RewriteRule ^ - [L]
  17. # Default route
  18. RewriteRule ^ index.php [QSA,L]
  19. </IfModule>
展开查看全部

相关问题