我想重定向域名上的旧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 =全部完整)。我将如何修改上述? –