我正在尝试从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服务器上工作。
这里有什么我想念的吗?
请帮帮我。提前谢谢。
答案 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