我希望用这个.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等等