【问题标题】:Mod_rewrite url vice versa redirectMod_rewrite url 反之重定向
【发布时间】:2015-10-07 21:29:10
【问题描述】:

我无法理解,也找不到所需的明确信息。

是否甚至可以使用 mod_rewrite localhost/mysite/index.php?a=search url 重写为 localhost/mysite/search

我已经尝试使用维基百科http://en.wikipedia.org/w/index.php?title=Dog,然后它立即重定向到https://en.wikipedia.org/wiki/Dog。我想要类似的东西。

我已经在我的本地主机站点 .htaccess 文件上尝试过这段代码:

RewriteRule ^([a-z]+)/?$ index.php?a=$1 [NC,L]

当我尝试在浏览器中输入localhost/mysite/search 之类的内容时它起作用了,但这只是我想要的一部分。请回答,我已经筋疲力尽了。

【问题讨论】:

  • IMO,最简单的方法是在 php 中检查 $_SERVER['REQUEST_URI'],如果它是带有查询字符串的 url,则重定向回来。
  • 那么只能这样吗?而 mod_rewrite 只是不适合这部分 url 更改?而 mod_rewrite 只能在直接这样输入时保留 url mysite/search?

标签: php apache .htaccess mod-rewrite


【解决方案1】:

您需要一个额外的重定向规则来重定向到漂亮的 URL。这样做:

RewriteEngine On

RewriteCond %{THE_REQUEST} /index\.php\?a=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L,NE]

RewriteRule ^([a-z]+)/?$ index.php?a=$1 [NC,L,QSA]

【讨论】:

  • 成功了!非常感谢,现在我有机会明白一些事情了!
  • 你能回答更多问题吗?使用 302 重定向或 301 重定向有区别吗?什么链接格式会在搜索结果中显示搜索引擎?他们会认为这是一页还是两页?
  • 302 非常适合测试,因为浏览器会永久缓存 301。验证后,您可以将其设为301
  • 但是在这个例子中,什么时候才需要从 site.com?url=string 重定向到 site.com?url=string?可以不假思索地改成301吗?进行这种重定向真的很常见吗?或者它甚至可能不需要(尤其是在一个新网站上,我可以从一开始就编写带有新网址的链接)?对到处都是旧链接的旧大网站这样做好吗?
  • 很抱歉打扰,但是所有问题的答案都是“是”吗?
猜你喜欢
  • 1970-01-01
  • 2012-11-12
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多