使用mod_rewrite隐藏文件扩展名

时间:2011-10-02 21:18:37

标签: apache mod-rewrite

如何隐藏所有文件扩展名,例如.php来反击SEO

/page => /page.php

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$           %{REQUEST_FILENAME}.php [L]

这不起作用......

修改

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !\.php$ [NC]
RewriteRule ^(.*)([^/]*)$       /$1$2.php [QSA,L]

1 个答案:

答案 0 :(得分:0)

你在代码中写了一些奇怪的错误!

  • %{REQUEST_FILENAME}已包含文件扩展名,因此您要求的文件以.php.php结尾,并且-f - 标志,您正在检查是否存在此类文件。此外,实际上不需要检查所请求的文件是否存在您想要做的事情。
  • 您的RewriteRule会将任何dot-php文件重写为相同的网址以及其他.php。因此index.php将成为index.php.php
  • RewriteRule一开始的感叹号是什么?

修复这些错误,你会得到类似的结果:

RewriteRule (.*)\.php$ $1/

您可以在expresison的右侧使用$1, $2, $...来访问左侧括号()之间的第n个匹配。

有关mod_rewrite的更多信息,请参阅here。也许不时看一下也许会有所帮助。 ;)