.htaccess反向重写没有循环?

时间:2009-06-17 13:22:44

标签: .htaccess mod-rewrite

我有一个名为 bfly.php 的现有页面,我需要将其更改为 butterfly-jewelry.php

我想这样做,如果有人去了网址 butterfly-jewelry.php ,他们会获得bfly.php页面,但网址不会改变它仍然是 butterfly- jewelry.php 。但是如果有人直接去bfly.php,网址会变为 butterfly-jewelry.php

有没有办法做到这一点而不会陷入重写循环?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将文件重命名为例如bfly1.php然后使用它:

RewriteRule ^butterfly-jewelry\.php bfly1.php [L,QSA]
RewriteRule ^bfly\.php http://yourhost.com/butterfly-jewelry.php [L,QSA,R=301]

(我尝试过Blixt的解决方案,但是尽管有L-flag,它仍会导致无限循环。)

答案 1 :(得分:0)

您可以使用上次规则和重定向标记来执行您想要的操作(请参阅the mod_rewrite documentation):

# Rewrite request to bfly.php, and then stop the rewrite engine.
RewriteRule ^butterfly-jewelry\.php$ bfly.php [L]
# Redirect the client to butterfly-jewelry.php with "Permanently Moved" status
RewriteRule ^bfly\.php$ butterfly-jewelry.php [L,R=301]

我没有测试过上述内容,但我相信它应该可行。