我正在尝试使用我的.htaccess文件中的mod_rewrite
来清理我的网址。
假设我的服务器上有以下文件:
/about.php
/contact.php
如果用户输入about
或contact
,我希望向用户显示about.php
或contact.php
,但确保网址保持不变(即全部发生在服务器端)。同样,如果用户输入about.php
或contact.php
,我希望将其重定向到about
或contact
,然后将其拉到页面服务器端,同时保留漂亮的网址。
到目前为止我尝试过:
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进行测试。
答案 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]