如何在url中隐藏php扩展?

时间:2012-06-13 10:24:41

标签: apache .htaccess

我正在尝试从url中删除php扩展,但它不适用于我。我正在使用Windows 7,apache2.2.17和php5.3。现在我已将其配置为

在.htaccess文件中

OPTIONS -Indexes
IndexIgnore *

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

在httpd.conf中启用mod_rewrite为

LoadModule rewrite_module modules/mod_rewrite.so

<Directory "D:/Apache/htdocs">
    Options Indexes FollowSymLinks ExecCGI MultiViews
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

在php.ini中

expose_php = On

在进行这些配置后仍然无法从我的Windows机器中的url中删除php扩展,但同样的事情在ubuntu服务器上工作。

这里有什么我想念的吗?

请帮帮我。提前谢谢。

2 个答案:

答案 0 :(得分:2)

这可能会回答你的问题:

  

RewriteRule ^ /([^ - ] *)$ /$1.php

适用于根目录。

  

RewriteRule ^ catalog /([^ - ] *)$ catalog / $ 1.php

或者您可以编写自动脚本:

  

RewriteRule ^ /([^ - ] )/([^ - ] )$ /$1/$2.php

但这是针对“httpd.conf”文件的。

其中:([^ - ] *)表示变量; $ 1,$ 2表示转换为变量,即

www.verity.com/foo/bar =&gt; verity.com/foo/bar.php

答案 1 :(得分:0)

请改用:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ $1.php

通过这样做,您可以将example.com/abc.php称为example.com/abc