- 用户点击链接(来自他们的电子邮件(:
http://www.site.com/edit/wih293f73y
- 浏览器窗口打开,并将它们带到正确的页面
- 但现在浏览器的地址栏显示:
http://www.site.com/editor.php?editCode=wih293f73y
额外信息:
- 我的重写规则是:
RewriteRule ^edit/([A-Za-z0-9-]+)/?$ editor.php?editCode=$1 [NC,L]
- 只有当用户单击链接时才会出现此问题。当你只需在地址栏中键入漂亮的url时,它就可以完美地工作
- 此问题仅适用于包含
www.
的链接-链接http://site.com/edit/wih293f73y
的工作方式类似于符咒 - 我的.htaccess文件包括以下代码(来自HTML5样板,我以前不知道(:
# Rewrite www.example.com → example.com <IfModule mod_rewrite.c> RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] </IfModule>
如果这很重要的话,这发生在我的其他重写规则之后。
我只是看了一眼,很明显是您的www
规则导致了这种情况。问题是你想把它修好吗?如果你这样做了,那么把这个规则放在所有其他规则之上,你的问题就应该得到解决。
将其移动到所有其他规则的顶部
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
您可以使用重定向指令
重定向301^edit/([A-Za-z0-9-]+(/?$editor.php?editCode=$1
这种策略有一些优点也有缺点。优点是;
- 它超级快。你甚至不需要加载你的应用程序就可以工作
- 这是最小的代码
- 重定向是Apache(或任何http服务器(的固有部分,不会很快出现
缺点是;
- 这不是你的应用程序的一部分。如果您决定更改逻辑或URL,您也必须更改它
- 它比较慢,因为您需要调用php,而不是让Apache发出重定向