【问题标题】:How to make redirect from one group of URLs to another?如何从一组 URL 重定向到另一组?
【发布时间】:2016-10-09 23:05:39
【问题描述】:

我需要通过以下方式进行重定向:

来自: site.ru/blog/article_slug 至: site.ru/news/article_slug

我尝试使用它,但它不能正常工作(显示 404 错误页面):

RewriteCond %{REQUEST_URI} ^(.*)(\/blog\/)(\S+)$
RewriteRule /news\/%3 [R=301,L]

完整的 htaccess 文件(mod_rewrite 部分):

RewriteEngine on

RedirectMatch 403 /\..*$

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

【问题讨论】:

  • 请描述您从所使用的规则中得到了什么行为,以及它与您的预期有何不同。 “不能正常工作”不够具体。
  • 显示404错误页面

标签: php .htaccess yii


【解决方案1】:

您是否考虑过使用 HTML 或 Javascript 进行此操作?使用 HTML,您只需要在 site.ru/blog/article_slug 的头部包含元标记:<meta http-equid="refresh" content="0"; URL ='http://site.ru/news/article_slug.com />。您也可以使用 Javascript 来执行此操作:window.location = "http://site.ru/news/article_slug.com"

【讨论】:

  • 不,我不能使用它。它应该由 htaccess 使用 mod_rewrite 完成。您的变体可用于静态站点。可能是我误会你了……
【解决方案2】:

试试这个规则,

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}  !-f
RewriteCond %{REQUEST_FILENAME}  !-d
RewriteRule ^blog/(.*)$ news/$1 [R=301,L]

RewriteBase 上,如果它是根目录,请将您应用规则的实际目录放在上面的规则中。

【讨论】:

  • 我尝试了您的建议,但现在它会将我重定向到:site.com/var/www/html/public/news/Skype-for-Business。它粘贴完整的文件系统路径
  • 我已经有了你提供的结构。上面有问题的正文我发布了完整的.htaccess。那么我到底应该在哪里写你的结构呢?
  • .htaccess 文件位于“var/www/html/public”
  • 试试这个你的索引文件所在的地方,就像在公共的地方,这将是你目录的根目录。
猜你喜欢
  • 2023-03-20
  • 2015-12-29
  • 1970-01-01
  • 2021-12-09
  • 2013-03-13
  • 2016-11-20
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多