2013-01-07 80 views
0

我在通过删除文件扩展名清洁我的网页的URL的过程,而网络是快速提供以下的.htaccess代码:的.htaccess扩展名的网页,404当包括扩展

RewriteEngine叙述在 的RewriteCond%{} REQUEST_FILENAME!-d 的RewriteCond%{} REQUEST_FILENAME -f .PHP重写规则 ^(。*)$ /$1.php

它的工作原理,但人们仍然可以通过在末尾添加.PHP访问文件像以前一样。我不想要这个!理想情况下,我希望每个以.php结尾的访问过的页面都被视为没有.php部分的类型。这是可以实现的吗?

综上所述:

  • www.page.com/example.php显示404
  • www.page.com/example显示器使用example.php

预先感谢。

回答

0

你可能不是还在寻找一个答案在这里,但以防万一有人碰到这个失蹄,这里是你如何做到这一点:

首先,做一个外部重定向:

## hide .php extension 
## To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}s([^.]+).php [NC] 
RewriteRule^%1 [R,L,NC] 

然后,做一个内部重定向:

## To internally forward /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*?)/([a-zA-Z0-9_-]+)/([0-9]+)$ /new/$1.php?ID=$3 [L] 

这会让你那里!如果它不起作用,请确保它们位于您的htaccess文件的顶部:

RewriteEngine On 
RewriteOptions inherit 
Options +FollowSymlinks 
Options -Multiviews 

就是这样!我在我的博客上解释编码:http://kimjoyfox.com/writing-seo-friendly-urls-using-htaccess/