【发布时间】:2012-08-29 02:48:27
【问题描述】:
我正在尝试重定向域名上的旧 asp 页面,以便它们链接到 CakePHP 版本(使用 1.3)上各自的页面。域名是一样的。正在添加这些重定向,因此搜索引擎中的结果会转到新的 Cake 页面。
我的 /.htaccess 文件中有一堆 Redirect 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 参数是 not 附加的。我想将所有这些重定向保留在我的 .htaccess 文件中。如何防止附加此url 查询字符串参数?
【问题讨论】:
标签: apache cakephp mod-rewrite redirect url-rewriting