2015-08-20 90 views
1

我最近從blogger切換到wordpress,並注意到許多傳入鏈接在我的帖子鏈接末尾添加了?m=1參數。如何重定向URL參數?m = 1?

例子:

http://www.example.com/2015/06/name-of-blog-post.html?m=1 

...我已經尋找一種方法來取出?m=1參數,我發現類似的情況,以礦上這個網站,但該人士也有一些環節缺少.html的問題。

據我所知,我所有的鏈接都加上了.html,所以我不知道他的代碼會起作用。

對我來說,解決這個問題最簡單和最好的方法是什麼?

+0

你不需要查詢字符串嗎?它可以完全刪除嗎? – MrWhite

+0

我不這麼認爲?我認爲這是一個pinterest(通過手機)已附加到URL的末尾,但正如我下面所說,我只是在學習所有這些,所以我只是猜測。 –

回答

0

要簡單地在?m=1(正好)作爲URL參數傳遞時完全刪除查詢字符串,則可以使用mod_rewrite在根.htaccess文件中執行類似操作。以下指令應在.htaccess文件的頂部放:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^m=1$ 
RewriteRule (.*) /$1? [R=302,L] 

更改302(臨時)於301(永久)當你確定它工作正常。由於永久重定向由瀏覽器緩存,因此不適合測試。但是,如果這只是爲了解決規範化問題(控制搜索引擎索引的URL),那麼您可以在head部分簡單地使用rel="canonical"元素。

另外,在Google Search Console(以前的Google網站站長工具)中,您可以指示Google忽略m網址參數。雖然這顯然隻影響谷歌。


如果您需要匹配?m=1?m=0那麼你可以從^m=1$改變CondPattern^m=[01]$

+0

對不起 - 承擔我的問題,因爲我還有其他一些問題: 1)我能找到我的。htaccess文件通過我有一個插件(搜索引擎優化Yoast)。我注意到它已經有一個簡短的代碼。我在下面添加這個代碼嗎? 2)如果我的問題還包括?m = 0參數,那麼我粘貼上面的代碼兩次,用^ m = 0 $代替第二個mod_rewrite,還是有更好的方法來做到這一點? 非常感謝您的幫助! –

+0

1)這些指令應該放在.htaccess文件的最上面,_上面的現有指令。 2)如果「問題」還包括'?m = 0' URL,則將'^ m = 1 $'改爲'^ m = [01] $' – MrWhite

+0

這是頂端: #使用PHP5.4 Single php .ini作爲默認值。 #BEGIN WordPress RewriteEngine On .... 代碼會在#BEGIN Wordpress之後執行嗎? –

2

您無法更改傳入鏈接 - 這些鏈接由用戶點擊頁面上的href標籤設置。

它不會影響什麼的網頁上,除非你頁面上使用這個變量,例如PHP通過$_GET

$data = $_GET["m"]; 
print $data; //will output "1" 

正是在這個意義上,通常用來上看到推薦的來源 - 例如,Facebook會將?ref=ts附加到傳出鏈接的末尾,以顯示它已從「熱門搜索」中單擊。

+0

「您無法更改傳入鏈接」 - 但它們可以是_redirected_。 – MrWhite

+0

那麼重定向這些鏈接的最好方法是什麼,因爲它們都來自不同的帖子?我看到一些人提到.htaccess,但我對這一切都很陌生。 –