2
我有一個與htaccess
重定向的問題。 我需要將3個不同的路徑重定向到3個不同的頁面,我有靜態頁面,如果用戶是爬蟲。重定向htaccess不能正常工作
實施例:
- www.example.com - > www.example.com/static/index.php
- www.example.com/news - > www.example.com/static/ news.php
- www.example.com/home - > www.example.com/static/home.php
我嘗試了以下配置,但我認爲有衝突的一些規則,其實我仍然被重定向到預渲染服務。
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^static - [L,NC]
RewriteCond %{HTTP_USER_AGENT} bot|crawl|slurp|spider|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|bingbot|Baiduspider|Yahoo|YahooSeeker|quora\ link\ preview|showyoubot|outbrain|pinterest|applebot [NC,OR]
RewriteCond %{REQUEST_URI} ^/home$
# Proxy the request
RewriteRule ^/home /static/home.php [L]
RewriteCond %{HTTP_USER_AGENT} bot|crawl|slurp|spider|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|bingbot|Baiduspider|Yahoo|YahooSeeker|quora\ link\ preview|showyoubot|outbrain|pinterest|applebot [NC,OR]
RewriteCond %{REQUEST_URI} ^/news$
# Proxy the request
RewriteRule ^/news /static/news.php [L]
RewriteCond %{HTTP_USER_AGENT} bot|crawl|slurp|spider|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|bingbot|Baiduspider|Yahoo|YahooSeeker|quora\ link\ preview|showyoubot|outbrain|pinterest|applebot [NC,OR]
RewriteCond %{REQUEST_URI} ^/$
# Proxy the request
RewriteRule ^/$ /static/index.php [L]
# Handle Prerender.io
RequestHeader set X-Prerender-Token "------------------"
RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|bingbot|Baiduspider|Yahoo|YahooSeeker|quora\ link\ preview|showyoubot|outbrain|pinterest|applebot [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
# Proxy the request
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))(.*) http://service.prerender.io/http://%{HTTP_HOST}/$2 [L]
# (REQUEST_FILENAME is only relative in virtualhost context, so not usable)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
# Go to it as is
RewriteRule^- [L]
# If path ends with/and is not just a single /, redirect to without the trailing/
RewriteCond %{REQUEST_URI} ^.*/$
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.*)/$ $1 [R,QSA,L]
# Accept everything on index.html
RewriteRule^index.html [L]
</IfModule>
我使用谷歌瀏覽器正確更改了我的用戶代理,但我仍然被重定向到預渲染服務。
刪除斜線開頭,例如'^重寫規則回家/static/home.php [L]' –
......在每個目錄.htaccess文件, 'RewriteRule' _pattern_與URL路徑匹配的不是目錄前綴(.htaccess文件所在位置) - 因此它從不以斜槓開始。 – MrWhite