如何将file.php重定向到文件,但是将文件指向file.php?

时间:2012-02-12 16:17:30

标签: apache http .htaccess

我正在尝试使用我的.htaccess文件中的mod_rewrite来清理我的网址。

假设我的服务器上有以下文件:

/about.php
/contact.php

如果用户输入aboutcontact,我希望向用户显示about.phpcontact.php,但确保网址保持不变(即全部发生在服务器端)。同样,如果用户输入about.phpcontact.php,我希望将其重定向到aboutcontact,然后将其拉到页面服务器端,同时保留漂亮的网址。

到目前为止我尝试过:

RewriteEngine on
RewriteRule about about.php
RewriteRule contact contact.php
RewriteRule about.php about [R]
RewriteRule contact.php contact [R]

这导致循环重定向循环。

反之亦然:

RewriteEngine on
RewriteRule about.php about [R]
RewriteRule contact.php contact [R]
RewriteRule about about.php
RewriteRule contact contact.php

这是有效的,但重定向不起作用(URL保持不变)。

如何制作它以便我没有获得重定向循环,但我的网页都会指向没有.php的版本?

注意:我知道[R]是302而不是301,但我使用302进行测试。

1 个答案:

答案 0 :(得分:1)

RewriteEngine on

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

RewriteRule ^tech$ tech.php [L]
RewriteRule ^contact$ contact.php [L]
RewriteRule ^tech\.php$ tech [L,R]
RewriteRule ^contact\.php$ contact [L,R]