当用户使用htaccess直接在url中输入扩展名时,从文件中删除扩展名

时间:2016-05-30 05:39:07

标签: apache .htaccess mod-rewrite

我在.htaccess中有一条规则来加载file.php - >中没有扩展名的文件file。这很有效。用户可以直接在网址栏中写下问题:example.com/file.php自动加载example.com/file

目前htaccess文件很简单,如下所示:

RewriteEngine On
RewriteRule ^file$ /file.php [L]

2 个答案:

答案 0 :(得分:1)

请尝试以下方法。代码中的简短评论。

RewriteEngine On

# Strip .php extension from original request
RewriteCond %{THE_REQUEST} \s\/(file).php [NC]
RewriteRule ^ /%1 [R=302,L]

# Rewrite file back to file.php internally
RewriteRule ^(file)$ /$1.php [L]
  

要使重定向永久化并由浏览器和漫游器缓存,请将302更改为301。

更新:如果您希望更广泛,请将(file)更改为(\w+),这将匹配一个或多个字符,包括a-z0-9和下划线/低线。 Learn more

答案 1 :(得分:-1)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule file\.php$ /file [L]