4

我正在使用以下htaccess

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301]
    RewriteRule ^user/([^/]*)/$ /user/index.php?usr=$1

前三行将我的网站的非 www url 重定向到 www ..

用于规范目的的另一行重定向例如www.mysite.com/user/index.php?usr=JAHAJEE将变为www.mysite.com/user/JAHAJEE/.

我的问题是在我为非 www 添加上述重定向到 www 之后,规范的重定向页面显示 url 参数 (egwww.mysite.com/user/JAHAJEE/?usr=JAHAJEE) 。请检查http://www.jahajee.com/user/JAHAJEE/ & http://jahajee.com/user/JAHAJEE/

如何防止 url 参数显示在重定向的 URL 中。先感谢您。

4

2 回答 2

7

[R=301]会让 mod_rewrite 知道请求应该被重定向,但请求不会立即被重定向。它将评估规则,直到找到[L]or[END]标志(或到达文件末尾)。它现在匹配第一条规则,并告诉当 mod_rewrite 感觉准备好时,它应该重定向。mod_rewrite 仍然没有找到LorEND标志,并且仍然有规则要匹配。然后它将匹配第二条规则并将其包含在重定向中。

您需要更改第一条规则的标志[R=301,L]以使其重定向。重定向的请求将.htaccess再次调用它,如果需要,将匹配第二条规则。然后它将再次作为内部重写正常工作。

于 2013-10-19T15:19:17.130 回答
0

可能你可以使用 301 或 303 重定向
301永久
303临时

于 2015-08-06T09:26:05.820 回答