【问题标题】:How to make .htaccess file如何制作 .htaccess 文件
【发布时间】:2014-06-02 13:32:38
【问题描述】:

如何正确编写 .htaccess 文件以重定向我网站上的链接。 我有这样的链接:

http://mysite/todo/1001/
http://mysite/todo/1002/
http://mysite/todo/1003/

我想将它们全部重定向到

http://app.mysite/todo/1001/
http://app.mysite/todo/1002/
http://app.mysite/todo/1003/

谢谢!

【问题讨论】:

  • How to redirect in apache? 的可能重复项
  • 请创建一个最小示例。向我们展示该示例的代码,您会遇到什么错误以及您预期会发生什么。这表明您已经付出了努力,并且您对要解决的问题有基本的了解。 “请编写我的代码”形式的问题不适合 StackOverflow。

标签: .htaccess redirect


【解决方案1】:

将其放在 .htaccess 中:

RewriteEngine On 
RewriteRule   ^todo(.*)$ http://app.mysite/todo$1 [R=301,NC,L]

正如代码所述,它启用了 Apache RewriteEngine (RewriteEngine On)。 apache RewriteEngine 允许执行 RewriteRule 来启动重定向。

RewriteRule 有 2 个参数。第一个参数写在 ^ 和 $ 之间。它包含对需要捕获的 URL 的引用,由字符串 (todo) 和 (.*) 捕获,该字符串采用“todo”后面的所有尾随。

第二个参数采用重定向 URL。 $1 采用第一个参数找到的尾随参数。

那么 RewriteRule 可以有标志 (R=301, NC, L)。如果 url 移动是永久的,则应附加 R=301。 NC 告诉 apache 将条件视为不区分大小写。附加标志 L 告诉 apache 不要在当前 RewriteRule 之下执行任何进一步的规则。

【讨论】:

  • 但是如果我有很多这样的链接呢?是否可以使用一条规则将它们全部重定向?
  • 试用RewriteRule ^http://mysite/todo/([0-9]+)/?$ http://app.mysite/todo/$1 [R=301,NC,L]
  • RewriteRule 上方是否有 RewriteEngine On 语句?
  • 我在没有第一次域调用的情况下更新了解决方案:试试这个:RewriteEngine On RewriteRule ^todo(.*)$ http://app.mysite/todo$1 [R=301,NC,L]
  • RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule 。 /index.php [L] RewriteRule ^signup/(.*)$ app.mysite/signup/$1 [R=301,NC,L]
猜你喜欢
  • 2011-12-15
  • 1970-01-01
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多