.htaccess - 如何从网址隐藏.php?

时间:2017-09-29 23:48:12

标签: php .htaccess url url-rewriting

我正在寻找一种清理网站网址的方法,例如在网址中有文件名时删除.php或.html。此外,如果可以轻松隐藏GET扩展,那也很好,但.php是主要目标。

从其他文章和SO问题我在网站主目录的.htaccess文件中有这段代码:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

第一部分重定向到https,如果有人用http键入网址。那部分工作正常。第二行应使用不带.php扩展名的文件。例如,https://www.fixitconnect.com/users.php应为https://fixitconnect.com/users

我不知道这种语法是如何工作的所以我只是在复制其他答案。看起来它设置了一些条件(如果当前文件的名称中有.php),那么如果满足这些条件,则应用规则(使用不带.php的url)。但我可能做得不对。

谢谢:)

2 个答案:

答案 0 :(得分:2)

以下htaccess修改将允许您访问路径而不会在末尾添加.php

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
</IfModule>

因此可以访问url https://www.fixitconnect.com/users.php https://www.fixitconnect.com/users。虽然网址https://www.fixitconnect.com/users.php仍然可以直接访问,只要它实际存在

使用下面的代码,你可以重写对index.php的所有请求基本上index.php是将处理所有url请求的php文件。

RewriteEngine on


RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule ^(.+)$ /index.php?url=$1 [NC,L]

同时检查此link

答案 1 :(得分:1)

尝试下面的代码:

DirectorySlash Off 
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)  /$1.html [L] 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)  /$1.php [L]
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(html|php)[\s?/] [NC] 
RewriteRule ^(.*)  /%1%2 [R=302,L]
RewriteCond %{REQUEST_URI} !(/$|\.) [NC]
RewriteRule ^  %{REQUEST_URI}/ [R=302,L] 

以上代码将删除html & php个扩展名,然后优先检查该名称,而不是文件扩展名,然后是文件夹。

因此,如果您的文件和文件夹具有相同的名称,那么当文件没有扩展名时,优先级将是。

注意:如果你有两个同名和不同扩展名的文件,则优先考虑.html,如果你想成为.php,请让第五个&amp;第六行是第三和第三第四行。

当它们没有斜线时再次删除目录的最后一行。

如果没问题,请将302更改为301以获得永久重定向。