2017-09-29 230 views
2

我正在寻找清理我网站的网址的方法,例如在网址中存在文件名时移除.php或.html。另外,如果可以轻松地隐藏GET扩展,那也是很好的,但.php是主要目标。.htaccess - 我怎样才能从网址隐藏.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网址。这部分工作正常。第二个3行应该使用不带.php扩展名的文件。例如https://www.fixitconnect.com/users.php应该是https://fixitconnect.com/users

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

谢谢:)

回答

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让第五&第六行是第三&第四线。

最后一行在没有斜线时再次对目录进行切割。

如果可以,将302更改为301以获得永久重定向。

+0

这似乎工作,谢谢:)我主要关注.php页面,因为网站上99%的页面以.php结尾。所以如果有另一个扩展名如.html的文件,那么它只会显示.html。彻底彻底很好 – ioan

2

以下htaccess的修改将允许您访问的路径结尾没有

<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访问具有.PHP。虽然url https://www.fixitconnect.com/users.php仍然可以直接访问,只要它实际存在

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

RewriteEngine on 


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

还要检查这个link

+0

工作:D但我也可以使它重定向到https://www.fixitconnect.com/users,即使链接指向https://www.fixitconnect.com/users.php? – ioan

+1

如果有一个名为'user'的文件夹,但实际上想要'user'作为php页面,比如'/ user',它会指向页面还是打开文件夹? – Thielicious

+0

好点,甚至不知道你可以不指定文件,如/ user/jake,而只是去一个文件夹。php – ioan