【问题标题】:How to redirect a new page (wrong URL) to another page?如何将新页面(错误的 URL)重定向到另一个页面?
【发布时间】:2017-10-18 05:37:47
【问题描述】:

我是编程新手。我们有一个办公项目,网站的 URL 是www.project.com.ph(示例名称),这已经是来自客户端的实时网站。但是发布的打印输出中有用户前往www.project.com/ph的说明,这是错误的,我们无法重新打印该材料,因为它已经到达了很多活动地点。

现在的问题是,如果用户在浏览器的地址栏输入www.project.com/ph,我们需要自动重定向到www.project.com.ph。我问如果没有任何类型的 CMS 或 Wordpress 这是否可能,以及如何实际做到这一点?我们为此购买了一个新域名www.project.com。任何形式的帮助表示赞赏。

【问题讨论】:

    标签: .htaccess url redirect webpage url-redirection


    【解决方案1】:

    您可以使用 .htaccess 文件中的 RewritrRule 重定向(301 重定向)URL

    RewriteRule "http://www.project.com/ph/(.*)" "http://www.project.com.ph/$1" [L,NC,R=301]
    

    【讨论】:

    • 这有一些错误...RewriteRule pattern 匹配的 URL 路径不包括主机名(因此永远不会匹配)。 substitution 缺少 scheme,因此将被视为相对 URL 路径(这将导致格式错误的重定向)。 substitution 中也缺少反向引用(我假设您打算使用它,因为您在 pattern 中有一个捕获组,如果没有它,它就不那么有用了)。
    【解决方案2】:

    www.project.com 根目录中的.htaccess 文件顶部附近尝试以下操作。如果两个域都指向同一个地方,这可以正常工作(尽管效率稍低),因为它专门检查我们请求的是“错误”域:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?project\.com$ [NC]
    RewriteRule ^ph/?(.*) http://www.project.com.ph/$1 [NC,R=302,L]
    

    这会将www.project.com/ph(无斜杠)、www.project.com/ph/(带有尾部斜杠)和www.project.com/ph/<whatever> 的请求重定向到http://www.project.com.ph/<whatever>

    这是一个临时 (302) 重定向。仅当您确定它工作正常时才将其更改为永久 (301)。

    【讨论】:

      【解决方案3】:

      来自 kj. 对类似问题的回答,here

      在 www.project.com 的 .htaccess 中,这应该可以解决问题。

      RewriteEngine on
      RewriteRule ^(.*)$ http://www.project.com.ph/ [R=permanent,NC,L]
      

      这会将任何对 project.com 的请求重定向到域 http://www.project.com.ph/

      要在/ph/`之后包含路径,您可以使用它。

      RewriteEngine on
      # redirect including path after ph/ (e.g. project.com/ph/directory/file.php to project.com.ph/directory/file.php
      RewriteRule ^ph/(.*)$ http://www.project.com.ph/$1 [R=permanent,NC,L]
      # redirect any other requests to project.com.ph index
      RewriteRule ^(.*)$ http://www.project.com.ph/ [R=permanent,NC,L]
      

      【讨论】:

      • 另一个问题,如果 project.com.ph 有多个子页面,例如 www.project.com.ph/sub/1234、www.project.com.ph/sub/5678,这是否适用, 等等。?或者这是一种需要另一种解决方案的新情况?谢谢!
      • 另外值得注意的是,如果两个域都使用相同的主机,您将需要定义完整的原始 URL,例如 N.Danielprabhakaran 的答案。或者,在每条规则之前使用重写条件。 RewriteCond %{HTTP_HOST} ^www.project.com$
      猜你喜欢
      • 2023-02-02
      • 2015-08-14
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多