【问题标题】:Rewrite dynamic pages AND non-www to www (.htaccess)将动态页面和非 www 重写为 www (.htaccess)
【发布时间】:2017-01-02 14:34:54
【问题描述】:

好的,所以我有一个 page.php 放在 www.example.com/test 上,我想重写为 www.example.com/test/page/id (来自 www.example .com/test/page.php?page=id)

我添加了这个简单的 .htaccess,到目前为止一切都很好

Options +FollowSymLinks
RewriteEngine on
RewriteRule page/(.*)/ page.php?page=$1
RewriteRule page/(.*) page.php?page=$1

问题是我还想将 example.com/test/page/id 重定向到 www.example.com/test/page/id

这可能吗?我尝试添加一个 RewriteCond,但它搞砸了。

提前致谢

【问题讨论】:

  • 那篇文章没有讨论动态页面...
  • 这是两个概念。首先始终使用 301 将您的非 www 重定向到 www,然后您的动态重写将按照您提到的那样工作。
  • 是的,但如果我在开头添加一个重写条件,它只会动态重定向到非 www
  • @Sylwit 我说的不对吗?

标签: apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

我没有注意你的问题,请试试这个,我已经测试过了,用[L,R]标志的方式完全一样

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R]
RewriteRule page/(.*)/ page.php?page=$1
RewriteRule page/(.*) page.php?page=$1

【讨论】:

  • 同样的问题,当我输入 example.com/test/page/id 它重定向到 www.example.com/page/id 而我希望它重定向到 www.example.com /test/page/id
  • 首先你必须决定是否要将它应用到测试目录或根目录我可以为测试目录编辑它,因为测试它需要三个匹配的组。
  • 在测试目录上应用听起来不错,我应该改变什么?提前致谢
  • 对您的代码进行了一些更改,并且成功了,谢谢
【解决方案2】:

要将非 www 请求重定向到 www,请在您的 htaccess 中的 RewriteEngine 行下方添加以下规则

RewriteCond %{HTTP_HOST} !^www
RewriteRule ^ http://www%{HTTP_HOST}%{REQUEST_URI} [L,R]

【讨论】:

  • 它将我发送到 www.example.com/test/page/id?page=id
【解决方案3】:

试试这个

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteRule page/(.*)/ page.php?page=$1
RewriteRule page/(.*) page.php?page=$1

【讨论】:

  • 将我发送到:www.example.com/page/id(正如我在 page.php 放置在 www.example.com/test 上的问题上所说)
  • 抱歉,好像没有人明白你想要什么。你能把你的问题编辑得更明确吗?
  • 每个给出答案的人都在寻找相同的解决方案,所以如果每个人都失败了,可能是因为问题不清楚
  • 如果你这么认为......祝你有美好的一天
猜你喜欢
  • 2014-01-25
  • 2014-12-16
  • 2015-01-10
  • 2017-12-04
  • 2013-10-08
  • 2015-07-29
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
相关资源
最近更新 更多