【问题标题】:Prerender htaccess for subdirectory url为子目录 url 预渲染 htaccess
【发布时间】:2019-04-24 01:58:38
【问题描述】:

这是我的 htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]

RequestHeader set X-Prerender-Token "**************"

<IfModule mod_rewrite.c>

    <IfModule mod_proxy_http.c>
        RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
        RewriteCond %{QUERY_STRING} _escaped_fragment_

        # Proxy the request
        RewriteRule ^(.*)$ http://service.prerender.io/http://%{HTTP_HOST}$1 [P,L]


        RewriteRule ^ /index.html 
    </IfModule>
</IfModule>

我已经在 Angularjs 中完成了这些-

<head>
    <meta name="fragment" content="!">
</head>

$locationProvider.html5Mode(true);

我的网址看起来像-

https://www.{Hostname}/{folder-name}/ (BaseURl)

当我打开下面的 url 时,它会将我重定向到 404

https://www.{Hostname}/{folder-name}/category/category-name

谁能帮我解决这个 htaccess 问题?

【问题讨论】:

    标签: apache .htaccess prerender


    【解决方案1】:

    您需要确保 Prerender 配置在 .htaccess 的此部分之前运行:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.html [L]
    

    您的 .htaccess 可能如下所示:

    RewriteEngine On
    
    RequestHeader set X-Prerender-Token "**************"
    
    <IfModule mod_rewrite.c>
    
        <IfModule mod_proxy_http.c>
            RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
            RewriteCond %{QUERY_STRING} _escaped_fragment_
    
            # Only proxy the request to Prerender if it's a request for HTML
            RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff|\.svg))(.*) http://service.prerender.io/https://%{HTTP_HOST}.com/$2 [P,L]
        </IfModule>
    </IfModule>
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.html [L]
    

    如果这不能解决问题,请随时通过 support@prerender.io 向我们发送电子邮件,提供更多信息,以便我们提供帮助!

    【讨论】:

    • 你能一步一步详细解释吗?
    • 只需删除这 3 行并将它们添加回文件末尾代码的预渲染部分之后。我会更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    相关资源
    最近更新 更多