[英]Remove Some Characters From URL Using 301 Redirect htaccess?
我想從網址末尾刪除一些字符?m=1
& ?m=0
。 為此,我使用博客文章中的JavaScript 如何將Blogger移動模板強制重定向到桌面模板? 並以我想要的方式編輯它,直到低於1且工作正常。
<script type='text/javascript'>
var curl = window.location.href;if (curl.indexOf('m=1') != -1) {curl = curl.replace('m=1', '');window.location.href = curl;}
var curl = window.location.href;if (curl.indexOf('m=0') != -1) {curl = curl.replace('m=0', '');window.location.href = curl;}
</script>
它刪除了我想要的多余字符,然后重定向到新的URL,但是根據Google的說法,它對SE不友好,我必須通過.htaccess
使用301 Redirect
,它還會告訴每個搜索引擎該URL現在也已更改為此。
我的網址顯示為http://www.blog.com/2014/08/post-title.html?m=1
& http://www.blog.com/2014/08/post-title.html?m=0
現在http://www.blog.com/2014/08/post-title.html?m=0
...所以我可以使用.htaccess
和301 Redirect
來做同樣的事情嗎?
如果您在整個網站上只有此查詢字符串,則可以嘗試以下操作:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^m=1$ [OR]
RewriteCond %{QUERY_STRING} ^m=0$
RewriteRule (.*) $1? [R=301]
您可以使用mod_rewrite來做到這一點。 您可以使用%{QUERY_STRING}
檢查條件中的查詢字符串,並使用[R=301]
標志使其成為永久重定向。 QSD
標志將丟棄查詢字符串。
在Apache 2.4及更高版本中,可以使用以下命令:
RewriteCond %{QUERY_STRING} m=[01]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [QSD,R,L]
在較低版本的Apache中,QSD標志不存在。 您將必須使用技巧,通過將空查詢字符串附加到重寫目標來覆蓋查詢字符串。
RewriteCond %{QUERY_STRING} m=[01]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI}? [R,L]
更改R
以R=301
時,規則按預期工作。 請注意,您應該將其放置在博客的其他任何規則之前 。 最后,最有可能將請求發送到您的博客后端的“包羅萬象”規則,您必須先重定向。
在這里,我得到了另一種解決方案,因此,如果upper無法滿足您的要求,請嘗試在.htaccess
文件頂部添加以下代碼...
RewriteEngine On
RewriteCond %{QUERY_STRING} ^m=1$
RewriteRule ^(.*)$ /$1? [R=301,L]
RewriteCond %{QUERY_STRING} ^m=0$
RewriteRule ^(.*)$ /$0? [R=301,L]
上面的代碼僅在您的網址為http://www.example.com?m=1
,而在http://www.example.com?m=1&foo=bar
無效。
您可以使用簡單的Java腳本重定向用戶,此腳本應放置在所有CSS和JS的上方,因為一旦用戶訪問它就必須立即加載
<script>
if (screen.width <= 800) {
document.location = "http://mobileversionofyourwebsite .com/";
}
</script>
來源: 自動點 贊者sayoutlouder
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.