【问题标题】:Selective url redirect using .htaccess使用 .htaccess 的选择性 url 重定向
【发布时间】:2016-12-13 11:44:37
【问题描述】:

我有一个包含大量图片和静态内容的现有网站。我现在已经注册了 MaxCDN,需要将静态内容重定向到他们的 cdn。

我想要一个 htaccess 规则,它将检测像 array('css', 'js', 'jpg', 'jpeg', 'png' 'gif','pdf') 这样的文件扩展名并重定向到 cdn url。

示例: 普通网址:https://www.example.com/uploads/slider/1470903158.jpg CDN网址:https://www.cdn.com/uploads/slider/1470903158.jpg

我已经为我的区域定义了 CDN url。我会使用 corebase_url() 覆盖来执行相同的功能,但不幸的是该网站不在 CI 中,重新开始是不可行的。我认为在当前情况下使用 .htaccess 将是我最好的选择。不幸的是,我对 .htacces 几乎一无所知。

这是我当前的 .htaccess 文件

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /

        # Removes index.php from ExpressionEngine URLs
        RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
        RewriteCond %{REQUEST_URI} !/system/.* [NC]
        RewriteRule (.?)index\.php/(.*) /$1$2 [R=301,NE,L]

        # Directs all EE web requests through the site index file
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>


# BEGIN Expires
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
</ifModule>
# END Expires


#The following line is enough for .js and .css
    AddOutputFilter DEFLATE js css

    #The following line also enables compression by file content type, for the following list of Content-Type
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml

    #The following lines are to avoid bugs with some browsers
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
   Header append Vary: Accept-Encoding

【问题讨论】:

    标签: php .htaccess redirect


    【解决方案1】:

    您可以将此重定向规则用作您的第一条规则:

    RewriteEngine On
    
    RewriteRule ^.+\.(?:jpe?g|gif|pdf|css|js)$ https://www.cdn.com%{REQUEST_URI} [L,R=301,NC,NE]
    

    请注意,虽然此规则将完全根据问题工作和执行,但它不会解决 CDN 问题。 CDN 只会捕获带有 http 标头 200 的内容,而不是重定向 (301)。因此,即使您启用了这个机会,也取决于您的 CDN 提供商,该站点不会加载,或者即使它加载它也会破坏 CDN 的目的,因为如果所有请求都转到您的来源,然后被重定向到 CDN 数据中心,则不会速度的增加。

    【讨论】:

    • 感谢您的回答,但请考虑并非所有静态内容都位于 uploads/slider/ 文件夹下,基本上我需要删除基本 url - www.example.com 并将其替换为 CDN 基本 url 并保持 url 的其余部分不变
    • 我添加了你的规则,但它没有重定向,也没有给出任何错误。已附上我现有的 .htaccess 代码,这可能会造成干扰吗?
    • 正如我在回答中所建议的,将此规则放在RewriteEngine On 行的下方。
    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 2017-06-12
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多