【问题标题】:URL rewritten but indexed as Query StringURL 重写但索引为查询字符串
【发布时间】:2012-09-24 20:14:10
【问题描述】:

我尝试在谷歌上搜索它,但它给我的只是关于如何重写的教程,所以我想我会在这里试一试。

问题是我们有一个 htaccess 文件,它将 url 重写为查询字符串:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\/]+\/*[^\/]*\/*.*)$ index.php?app_route=$1 [QSA,L]

这行得通,似乎谷歌正在接受它,但是当你点击谷歌中的链接时,它会显示它被重写的查询字符串。我们只链接到“不错”的网址,所以我们不知道谷歌在哪里找到了这个。 Google for site:sorellehaarmode.nl 自己看看。

有没有人对此问题有经验或解决方案?

【问题讨论】:

  • 当您转到漂亮的 URL(没有查询字符串的那个)时,您会被重定向到有查询字符串的那个吗?
  • 不,您不会被重定向(明显)。它只是用 QS 加载 index.php,而用户没有看到它。

标签: .htaccess url-rewriting seo


【解决方案1】:

尝试添加这些规则(在您当前的 htaccess 文件中的任何位置,低于您已有的规则都可以):

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?app_route=([^&\ ]+)&?([^\ ]*)
RewriteRule ^/?index\.php$ /%1?%2 [L,R=301]

这应该将带有查询字符串的 URL 永久指向不带查询字符串的 URL。

【讨论】:

  • 谢谢,但这不起作用,它在路线的最后一个字母之前添加了一个问号。 /kapsalons/sorelle-rotterdam-esmeijerplei?n
  • @FERRYYY 抱歉,条件中的最后一个&?([^\ ]+) 应该是&?([^\ ]*)。 (将+ 替换为*
  • 像魅力一样工作。谢谢乔恩林!
猜你喜欢
  • 1970-01-01
  • 2011-08-02
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2019-02-13
相关资源
最近更新 更多