.htaccess URL重写有效,但地址栏则显示“脏”URL

时间:2013-06-01 14:56:03

标签: php apache .htaccess

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

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

2 个答案:

答案 0 :(得分:1)

我刚刚看了一下,显然你的www规则导致了这一点。问题是你想要修复吗?如果你这样做,那么在所有其他规则之上移动此规则,你的问题应该得到解决。

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

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

答案 1 :(得分:0)

您可以使用重定向指令

  

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

这种策略有一些利弊。专业人士;

  • 超级快。您甚至不需要加载应用程序就可以使用它。
  • 这是最小的代码。
  • 重定向是Apache(或任何http服务器)的固有部分,不会很快到达。

缺点;

  • 这不是您的应用程序的一部分。如果您决定更改逻辑或URL,您也必须更改它。
  • 它比较慢,因为你需要调用php,而不是让Apache发出重定向。