duanfei8897 2013-11-14 09:40
浏览 20
已采纳

从URL中删除php扩展 - 除了使用htaccess的一个且只有一个URL

I'm using this code to remove the .php from the end of my URL's making them more SEF.

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
RewriteRule ^ /%1 [R=301,NE,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]

This is generic and works perfectly for every UR but I would like to know how to create an exception for one and only one URL, ie: http://www.domain.com/services to http://www.domain.com/services.php without influencing all the others. Is this possible?

I've tried a simples Redirect but entered a loop.

! EDITED !

I failed to mention I have also these rules:

Add www.

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Remove index (the extension .php from index has been trimmed already)

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index/?([^\ \?]*) [NC]
RewriteRule ^ %1/%2 [R=301,L]
  • 写回答

4条回答 默认 最新

  • douluoxiao2286 2013-11-14 09:46
    关注

    You should :

    • add a RewriteCond, to disabled services.php => services
    • add another rule, to enforce services => services.php, as the first rule doesn't prevent user to manually use services url

    Full .htaccess

    # domain.tld > www.domain.tld (visible)
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    
    # services > services.php (visible)
    RewriteRule ^services/?$ services.php [R=301,QSA,L]
    
    # filename > filename.php (transparent)
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]
    
    # filename.php > filename (visible, exception for services.php)
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
    RewriteCond %{REQUEST_FILENAME} !services\.php
    RewriteRule ^ /%1 [R=301,NE,L]
    
    # index > /
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index/?([^\ \?]*) [NC]
    RewriteRule ^ %1/%2 [R=301,L]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟