簡體   English   中英

Apache2 mod_rewrite規則

[英]Apache2 mod_rewrite rules

我如何將靜態文件請求(如http://example.com/assets/img/logo.png)重寫為http://assets.example.com/img/logo.png

主站點重寫規則

    ServerName    example.com
    ServerAlias   example.com
    DocumentRoot /var/www/html/example.com/public/

   <Directory  /var/www/html/example.com/public/ >
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
      Order allow,deny
      allow from all
    </Directory>

RewriteEngine on
RewriteCond %{HTTP_HOST} !assets\.site\.com
RewriteCond %{REQUEST_URI} \.(png|gif|ico|css|js|tiff|woff|woff2|ogg|mp3)$ [NC]
RewriteRule ^(.*) http://assets.example.com$1 [NC,L]

資產子域正常運行

asset.example.com的虛擬主機配置

    ServerName     assets.example.com
    ServerAlias   assets.example.com
    DocumentRoot /var/www/html/example.com/public/assets/

   <Directory  /var/www/html/example.com/public/assets/ >
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
      Order allow,deny
      allow from all
    </Directory>

http://assets.example.com/img/logo.png給出了404,但如果我創建了/var/www/html/example.com/public/assets/assets/,則http://assets.example.com /img/logo.png回復200

根據您的評論,您只需要更改RewriteRule使用的正則表達式中捕獲的內容即可。 現在$1(.*) 您可以通過將其添加到捕獲組之前的路徑來從其中刪除“資產”。

更改:

RewriteRule ^(.*) http://assets.example.com$1 [NC,L]

至:

RewriteRule ^assets/(.*) http://assets.example.com/$1 [NC,L]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM