.htaccess和mod_rewrite

时间:2010-03-02 21:35:58

标签: .htaccess mod-rewrite

拥有以下mod_rewrite规则:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME}\.php -f
 RewriteRule ^(.*)$ $1.php
 RewriteRule ^index\.php$ / [R=301,L]
</IfModule>

从我的任何网址中删除.php。

但是,如果我尝试指定301重定向到已经存在的页面:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME}\.php -f
 RewriteRule ^(.*)$ $1.php
 RewriteRule ^index\.php$ / [R=301,L]
 RewriteRule ^something-page\.php$ /something-page [R=301,L]
</IfModule>

服务器无法解析域。

我想我似乎把自己置于一个递归循环中。

任何帮助很多赞赏!

1 个答案:

答案 0 :(得分:0)

RewriteRule ^(.*)$ $1.php

这会将“/ something-page”重定向到“/soemthing-page.php”,然后依次点击:

RewriteRule ^something-page\.php$ /something-page [R=301,L]

将some-page规则置于通用.php重写规则之上,并将其标记为[L]。