1

我正在尝试从 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 服务器中工作。

我在这里有什么遗漏吗?

4

2 回答 2

2

这可能会回答您的问题:

重写规则 ^/([^-]*)$ /$1.php

它适用于根目录。

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

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

重写规则 ^/([^-] )/([^-] )$ /$1/$2.php

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

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

www.verity.com/foo/bar => verity.com/foo/bar.php

于 2012-06-13T10:52:37.440 回答
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

于 2015-01-23T22:24:59.220 回答