【问题标题】:Redirecting to same page with .htaccess使用 .htaccess 重定向到同一页面
【发布时间】:2010-11-15 21:29:41
【问题描述】:

来自我的 .htaccess 文件:

RewriteRule ^showPAGE.php page [NC,R=301]
RewriteRule ^page showPAGE.php [NC,L]

我希望用户访问 url domain.com/showPAGE.php 被重定向到 domain.com/page 。 当输入domain.com/page 时,我希望它显示文件showPAGE.php 的内容。 那有可能吗? 以上导致无限重定向循环。

谢谢

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    您正在尝试做一些非常棘手的事情。问题在于,按照设计,RedirectRule 指令总是会再次触发完整的规则集。只有当您获得与任何规则都不匹配的最终 URL 时,您才能退出循环,这是棘手的部分,因为您正在重用 showPAGE.php 名称。

    到目前为止,我最好的尝试是添加一个假的隐藏字符串:

    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} ^/showPAGE\.php
    RewriteCond %{QUERY_STRING} !^internal
    RewriteRule ^ http://%{HTTP_HOST}/page [NC,R=301,L]
    
    RewriteRule ^page$ showPAGE.php?internal [NC,L]
    

    它有效,但并不令人愉快。毫无疑问,使用 PHP 处理重定向或简单地选择其他名称会更容易。

    【讨论】:

      【解决方案2】:

      showPAGE.phppage 的重定向需要有 [L] 以便它会立即停止处理和重定向,而不是继续并应用其他规则(立即将其映射回 showPAGE.php) .试试这个:

      RewriteRule ^showPAGE.php page [NC,R=301,L]
      RewriteRule ^page showPAGE.php [NC,L]
      

      【讨论】:

      • 我仍然收到“此网页有重定向循环”。 ://
      • 我现在实际上已经尝试过了,尝试RewriteRule的不同组合,放入一些RewriteCond,使用AliasRedirect,都无济于事......我想我被困住了。您是否尝试过在 showPAGE.php 中处理 showPAGE.php -> 页面重定向?
      • 克里斯,首先感谢您的努力! :) 我可以在 PHP 页面内完成,也可以重命名它。只是想知道是否有一种简短(更方便和有效)的方法来做到这一点。我将重命名文件。再次感谢!
      • 我从来没有想过要重命名页面! :-/
      猜你喜欢
      • 1970-01-01
      • 2014-09-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多