2
  • 用户点击链接(来自他们的电子邮件):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>

如果它很重要,这发生在我的其他重写规则之后。

4

2 回答 2

1

我只是看了一下,很明显是您的www规则导致了这种情况。问题是你想修复它吗?如果您这样做,则将此规则移到所有其他规则之上,您的问题应该得到解决。

将此移动到所有其他规则的顶部

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
于 2013-06-02T04:13:17.243 回答
0

您可以使用重定向指令

重定向 301 ^edit/([A-Za-z0-9-]+)/?$ editor.php?editCode=$1

这种策略有一些优点和缺点。优点是;

  • 它超级快。你甚至不需要加载你的应用程序来工作。
  • 这是最少的代码。
  • 重定向是 Apache(或任何 http 服务器)的固有部分,并且不会很快出现。

缺点是;

  • 它不是您的应用程序的一部分。如果您决定更改逻辑或 URL,您也必须更改它。
  • 它更慢,因为您需要调用 php,而不是让 Apache 发出重定向。
于 2013-06-01T15:29:33.753 回答