【问题标题】:.htaccess URL rewrite works, but address bar then shows 'dirty' URL.htaccess URL 重写有效,但地址栏随后显示“脏”URL
【发布时间】:2013-06-01 14:56:02
【问题描述】:
  • 用户点击链接(来自他们的电子邮件):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>

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

【问题讨论】:

  • 你确定那里没有[R] 标志来执行重定向?
  • 是的,这就是整行。我正在使用 HTML5 样板 .htaccess 文件,所以它会设置任何默认值吗?字符串“[R]”虽然没有出现在其中(这是一个很长的文件)。 [另外,我在问题中添加了一些额外信息]
  • 问题在于 htaccess 代码检查引荐来源网址在 htaccess 代码中搜索 HTTP_REFERER
  • 我试着用谷歌搜索这个HTTP_REFERER,但我仍然不确定你的意思?我在 .htaccess 文件中搜索了“HTTP_REFERER”,但它并没有出现在其中。
  • @MichaelBerkowski 我认为你在做某事!请看一下修改

标签: php apache .htaccess


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    你可以使用重定向指令

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

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

    • 速度超级快。您甚至不需要加载您的应用程序即可使用。
    • 这是最少的代码。
    • 重定向是 Apache(或任何 http 服务器)的固有部分,不会很快出现。

    缺点是;

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

    【讨论】:

    • 嗨,克里斯,这是个好策略吗?我对 .htaccess 很陌生,所以我只是想确保我没有采取任何会在以后咬我的捷径。这不只是一个简单的任务吗?应该在那里进行简单的重写应该没有什么困难?还是您需要更多信息才能知道它为什么不起作用?
    • 点击链接和输入 URL 之间的行为应该相同。如果您认为有区别,您可能需要查看电子邮件的其他功能。
    • 是的,这很奇怪 - 但它出现在任何链接中,而不仅仅是来自电子邮件。我也使用来自网站的链接对其进行了测试。如果你有时间,我会在问题中进行一些编辑,这可能是相当大的线索
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2011-01-06
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多