.htaccessredirectHTML到PHP和访问PHP文件没有。PHP扩展名

我希望用这个.htaccess文件完成2件事情。

1)所有对.html的请求指向.php例如。 用户转到: http : //www.mywebsite.com/contact.html浏览器加载: http : //www.mywebsite.com/contact.php

2)请求http://www.mywebsite.com/contact将加载contact.php(这应该适用于所有页面,而不仅仅是联系页面。

这是我的.htaccess文件。

Options -MultiViews RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ $1.php [L] 

说实话,我不知道这些在做什么。 我把它们混合在一起,从我阅读的文章的混乱。 任何帮助,将不胜感激。

尝试这样的事情。 按照评论线程的安全含义,但这是你要做的

 RewriteEngine On RewriteBase / # Redirect HTML to PHP RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*).html$ $1.php [L] # Otherwise, try PHP RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !\.php$ RewriteRule ^(.*)$ $1.php [L] # Lastly, fallback to error page RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . 404.php [L] 

我需要向你解释有关htaccess文件角色的一些事情;

在这个例子中,htaccess会尝试和匹配模式,如你在你的例子中所需要的;

如果一个模式匹配,那么会发生一些行动;

你用()标记所有的数据,而不是你需要从url中提取的

对于每个规则,第一个()将有$ 1的id,seccond()将有$ 2等等

如果$ 1是“帮助”,则可能会加载“helpme.php”文件,而不是“help.php”文件; 它会加载你想要加载的文件;

使用$ 1,$ 2 …您可以传递参数和值到真实/翻译的url请求

在我的例子中,我想总是使用index.php文件,你将使用任何你需要的文件

 Options +SymLinksIfOwnerMatch RewriteEngine on RewriteRule ^([a-zA-Z-]+)$ index.php?action=$1 [NC,L] RewriteRule ^(member)-([0-9-]+)$ index.php?action=member&id=$2 [NC,L] RewriteRule ^([a-zA-Z-]+)/([a-zA-Z-]+)-([0-9-]+)$ index.php?action=$1&saction=$2&sid=$3 [NC,L] RewriteRule ^([a-zA-Z-]+)/([0-9-]+)$ index.php?action=$1&id=$2 [NC,L] RewriteRule ^([0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/(.*).html$ index.php?action=details&id=$1&p1=$2&p2=$3&p3=$4 [NC,L] 

如果你想要所有的.html文件指向.php文件,一个简单的方法就是这样做

 RewriteRule ([\w\d\-_]+)(\.html)? $1.php [L] 

这也允许你使用子目录

contact.html将重定向到contact.php

/subdir/page.html将重定向到/subdir/page.php等等