2012-09-15 46 views
0

我一直在努力摆脱.php从我的网站。我希望它看起来像example.com/about而不是example.com/about.php。我有它会重写它,所以我可以键入它作为example.com/about,但我希望它是当我点击我的网站上的链接去example.com/about它加载网址为例.com/about和not example.com/about.php。总的来说,我希望它能够在有人在我的页面上加载任何东西时,网址的末尾没有.php文件。我的.htaccess现在看起来像这样,信息与mod_rewrite .htaccess

RewriteEngine on 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^([^/]+)/$ $1.php 

谢谢。

回答

0

试试这个:

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

你不会有改变你的网站的结构,因为它简单地指标“畸形”在“http://x.com/page”形式的URI没有扩展名最后。希望我帮助!

0

,但我想它,当我在我的网站上点击链接去example.com/about它是加载的网址为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]