使用htaccess删除.php扩展名

时间:2014-08-27 10:54:28

标签: php html .htaccess

我试图从网址栏中的网页中删除扩展程序。

示例:../ about_php => ../about

我在htaccess文件中使用的代码是我找到的代码here

RewriteEngine on

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

将其存储在我的网站文件夹的根目录中(包含2个网页的同一文件夹)。

但这似乎不起作用..实例here。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以在root .htaccess中使用此代码删除.php扩展名:

RewriteEngine on

# redirect /dir/file.php to /dir/file, important to use %{THE_REQUEST}
RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

# rewrite /dir/file to /dir/file.php
# %{DOCUMENT_ROOT}/$1\.php -f makes sure there is a matching .php file for the
# given name
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]

PS:出于搜索引擎优化的目的,你必须有第一条301规则,否则它对搜索引擎优化会有害,因为/about/about.php都会提供相同的内容。

参考:Apache mod_rewrite Introduction

Apache mod_rewrite Technical Details