我想重定向域名上的舊asp頁面,以便它們鏈接到CakePHP版本(使用1.3)上各自的頁面。域名是一樣的。這些重定向正在添加,因此搜索引擎中的結果會轉到新的Cake頁面。CakePHP 301重定向附加額外的查詢字符串參數
我在/.htaccess文件中有一堆重定向301(app/.htaccess和app/webroot/.htaccess是默認的)。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
Redirect 301 /contacts.asp http://domain/contacts
Redirect 301 /users.asp http://domain/users
</IfModule>
但由於某些原因,當我去到任何URL的測試重定向,它附加一個額外的查詢字符串參數。例如:
要:http://domain/contacts.asp
結果http://domain/contacts?url=contacts.asp
所以重定向工作,但它被追加url
查詢字符串參數。我不想完全刪除所有的查詢字符串參數,因爲一些舊的ASP鏈接具有查詢字符串參數,我也想傳遞給相應的Cake頁面。
我相信「URL」查詢字符串參數從app/webroot/.htaccess
文件來所見:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
需要注意的是,當我把我的301重定向到我的虛擬主機文件,該url
參數不附加。我想保留所有這些重定向到我的.htaccess文件中。我怎樣才能防止這個url
查詢字符串參數被追加?
謝謝。我想我明白你在說什麼。將'重寫規則^聯繫人\ .asp $ http:// domain/contacts [L,R = 301]'保持參數完好?例如,將http://domain/contacts.asp?contact = x重定向到http:// domain/contacts?contact = x'?另外,關於'Reddirect'指令方法,有什麼方法可以將它們移動到那些.htaccess文件中,以便它們是最後一個被評估的? –
@penguinegg是的,現有的查詢字符串會自動追加。不,移動'Redirect'語句不會影響任何東西,因爲它們是2個不同的模塊。一個模塊運行並完成它的工作,然後另一個模塊運行並執行它,然後最終獲得一個URI和一個重定向。 –
如果我想在應用程序的不同位置指定不同的參數集,它會變得更加複雜嗎?以下僅僅是一個例子(所以url結構可能沒有意義)。假設我想直接將'http://domain/contacts.asp?group=A&add=1'設置爲'http:// domain/contacts/A/1'和'http://domain/contacts.asp?group = B&admin = 0'到'http:// domain/contacts/B/0',但我仍然希望'http:// domain/contacts.asp'重定向到'http:// domain/contacts'(保留任何隨機參數如contacts.asp?view =全部完整)。我將如何修改上述? –