【问题标题】:php, .htaccess - redirect non extension to index + redirect usernames to user pagephp, .htaccess - 将非扩展名重定向到索引 + 将用户名重定向到用户页面
【发布时间】:2013-01-19 08:45:55
【问题描述】:

我在 google 和 stackoverflow 中搜索了很多,但没有找到完整的答案...

我想做的是:

1) 将所有非分机地址重定向到它们的页面。例如:home -> home.php

2) 将用户名重定向到搜索用户名的页面,如果存在,则加载另一个页面。例如:www.example.com/michael 将重定向到 go.php 并获取“michael”并且如果用户存在;转到 user.php?id=michael

它完全像脸书和推特!就像你输入“home”一样,它会进入主页,如果你输入用户名,它会进入你的个人资料!

我怎么能做这样的事?


编辑:或者可能是一个 .htaccess,它在第一个斜线之后向页面发送任何内容。例如:

www.example.com/this/is/test

将是:

www.example.com/index.php?var1=this&var2=is&var3=test

然后 index.php 页面将决定做什么......

【问题讨论】:

  • 那么/home是一个固定字符串。对?如果不是,www.example.com/michaelwww.example.com/home 有什么区别?两者具有相同的结构,并且都包含一个变量。
  • home 实际上是一个名为 home.php 的页面,还有 profile -> profile.php 等页面。但是 /michael 和任何不是页面的内容都会转到 user.php?id 之类的页面=michael 并假设他们是用户名
  • 好的。但我猜你也希望 profile 也被重定向,除非你愿意为每个名称制定一个规则,否则最好有一个模式为所有名称制定一个规则,如果可能的话。那只是关于1号。 2 号很清楚。
  • 我刚刚编辑了我的帖子...看看它...也许这是一个更好的方法...
  • 我看到了。这更好,用途更广泛。

标签: php .htaccess redirect


【解决方案1】:

你可以试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/([^/]+)?/?([^/]+)?/?([^/]+)?/?   [NC]
RewriteRule .*     index.php?var1=%1&var2=%2&var3=%3   [L]

静默地图

http://www.example.com/this/is/test

http://www.example.com/index.php?var1=this&var2=is&var3=test

所有参数都是可选的,最多3个。

如果需要更多,请在右端为每个添加([^/]+)?/?

RewriteCond %{REQUEST_URI}

根据 RewriteRule 中的 index.php 查询添加键 (varN),使用 %N 反向引用它们。

【讨论】:

  • 它说找不到页面! :(
  • 能否请您将输入的完整网址复制粘贴到评论中。
  • 请尝试使用 [R] 而不是 [L],以便您可以看到重定向的 URL。这是一个临时修改,以确定它是否正确重定向。
  • 完成。结果和以前一样!
  • 请再试一次,我修改了答案。
猜你喜欢
  • 2015-04-25
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
  • 2011-03-08
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
相关资源
最近更新 更多