我一直在努力摆脱我网站上的.php。我希望它看起来像example.com/about而不是example.com/about.php。我有它是否会重写它所以我可以在example.com/about中键入它,但我想要它是当我点击我的网站上的链接转到example.com/about它加载网址作为示例.com / about而不是example.com/about.php。总的来说,我希望这样每当有人在我的页面上加载任何东西时,url的末尾都没有.php。我的.htaccess现在看起来像这样,
RewriteEngine on
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
谢谢。
答案 0 :(得分:0)
试试这个:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
您不必更改网站的结构,因为它只是以“http://x.com/page”形式定位“格式错误”的URI而不是最后的扩展名。希望我帮忙!
答案 1 :(得分:0)
但我希望它是当我点击我的网站上的链接转到example.com/about时它加载url作为example.com/about而不是example.com/about.php
要解决此问题,您需要将网站中的链接从example.com/about.php
更改为example.com/about
。当“在野外”链接仍然指向.php
网址时,您仍然可以进行重定向,但除非您更改网站上的链接以删除扩展程序,否则会导致每个网页加载到您的服务器两次
至于重定向:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.php[\?\ ]
RewriteRule ^ /%1/ [L,R=301]
我不确定你的php扩展程序的规则是如何工作的,因为你匹配一个尾部斜杠但是当你用-f
检查文件时,你会有一个迷失的尾随在你的文件名中斜杠:例如/some/path/to/the_file/.php
代替/some/path/to/the_file.php
尝试:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+?)/?
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1.php [L]