dtz55359 2017-09-29 23:48
浏览 68
已采纳

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

I'm looking for a way to clean up my site's urls, like removing .php or .html when there is a file name in the url. Also if it's possible to easily hide GET extensions that would be nice too, but the .php is the main goal.

From other articles and SO questions I have this code in the .htaccess file in the main directory of a website:

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

The first part redirect to https, if someone types the url with http. That part work fine. The second 3 lines should use a url without the .php extension on files. For example https://www.fixitconnect.com/users.php should be https://fixitconnect.com/users

I don't know how this syntax works so i was just copying other answers. Looks like it sets some conditions (if there is .php in the current file's name), then a rule (use a url without the .php) to be applied if those conditions are met. But i'm probably not doing it right.

Thanks :)

  • 写回答

2条回答 默认 最新

  • dougu6815 2017-09-30 12:31
    关注

    Try the folowing code :

    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] 
    

    The above code will remove both html & php extensions then give priority to check that name without extensions to files first then folders .

    So , if you have file and folder with same name the priority will be for files when they comes without extensions .

    NOTE: if you have two files with same names and diffrent extentions the priority will be for .html and if you wanna to be for .php let fifth & sixth lines be in third & forth lines .

    The last line to slash directory again when they come without slash .

    If it is ok , change 302 to 301 to get permanent redirection.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 matlab解优化问题代码
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline