2012-02-05 144 views
0

我试图使用.htaccess重写URL并从URL中删除扩展名.htm,.php和.html,并强制重定向, : http://mydomain.com/example.php会重定向到http://mydomain.com/example http://mydomain.com/example-two.html会重定向到http://mydomain.com/example-two http://mydomain.com/example也将没有任何问题的工作 http://mydomain.com/example-two.txt(用于刷新一些通过AJAX的内容)将被重定向到http://mydomain.com/example-two隐藏文件扩展名并强制使用.htaccess强制重定向到无扩展名的网址

尝试和努力后到处阅读,th Ë最近我去了这一点:

Options +FollowSymlinks 
RewriteEngine On 

RewriteRule ^([a-zA-Z/-]+)\.(htm|html|php)$ http://mydomain.com/$1 [R=301] 

但它仍然给了我一个300 Multilple选择的消息,也当没有多项选择(的index.html)

我也想尝试第一次检查在服务器上的文件的存在,之前重命名文件,并在文件丢失的情况下,提供的自定义错误页,但我尝试这样做,它只是没有工作:

Options +FollowSymlinks 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME}\.php -f  [OR] 
RewriteCond %{REQUEST_FILENAME}\.htm(l)? -f 
RewriteRule ^([a-zA-Z/-]+)\.(html|php)$ http://mydomain.com/$1 [R=301] 

ErrorDocument 404 /error.htm 

非常感谢您提前任何帮助/建议

编辑: 它可能来自服务器设置(我有网站托管在“虚拟主机”网站)?

回答

1
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)\.(php|html?)$ http://mydomain.com/$1 [L,R=301] 

如果文件不存在,您只需要重写,否则您将无法提供任何内容。

+0

我刚刚尝试过,但没有重定向,因此当我访问http://mydomain.com/example.php或http://mydomain.com/example-two.html时,URL保持不变重定向,当我尝试http://mydomain.com/example我得到300多选择消息(即使只有在服务器上的example.php文件) – 2012-02-05 20:39:27

+0

我不认为我理解你的问题。哪些文件实际存在以及应该以什么名称引用? – nachito 2012-02-05 20:41:39

+0

example.php和example-two.html和example.txt存在于服务器上,我希望htaccess隐藏扩展名,以便用户不知道哪个文件是.html,.php或.txt文件 – 2012-02-05 20:43:45

相关问题