使用.htaccess重定向到同一页面

时间:2010-11-15 09:20:28

标签: apache .htaccess

来自我的.htaccess文件:

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

我希望用户转到网址domain.com/showPAGE.php重定向到domain.com/page。 输入domain.com/page后,我希望它显示文件showPAGE.php的内容。 这可能吗? 以上结果是无限重定向循环。

由于

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你正试图做一些非常棘手的事情。问题是,根据设计,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处理重定向或简单地选择其他名称更容易。