来自我的.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
的内容。
这可能吗?
以上结果是无限重定向循环。
由于
答案 0 :(得分:0)
从showPAGE.php
到page
的重定向需要有[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处理重定向或简单地选择其他名称更容易。