如何从URL中删除.html

你有任何想法如何从静态页面的URL中删除.html。 此外,我需要重定向任何网址.html到没有(即www.example.com/page.html到www.example.com/page)。

使用.htaccess下的apache你可以做这样的重定向:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

至于从网址中删除.html,只需链接到没有.html的页面

 <a href="http://www.example.com/page">page</a> 

这应该为你工作:

 #example.com/page will display the contents of example.com/page.html RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^(.+)$ $1.html [L,QSA] #301 from example.com/page.html to example.com/page RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /.*\.html\ HTTP/ RewriteRule ^(.*)\.html$ /$1 [R=301,L] 

我想对乔恩的答案有一些解释是有建设性的。 下列:

 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d 

检查如果指定的文件或目录分别不存在,则重写规则继续:

 RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

但是,这是什么意思? 它使用正则表达式(正则表达式) 。 这是我之前做的一些事情… 在这里输入图像描述

认为这是正确的。

注意:当测试您的.htaccess 使用301重定向。 使用302直到完成测试,因为浏览器将缓存301s。 请参阅https://stackoverflow.com/a/9204355/3217306

更新:我有点误会. 匹配除换行符之外的所有字符,所以包含空格。 此外, 这是一个有用的正则表达式备忘单

资料来源:

http://community.sitepoint.com/t/what-does-this-mean-rewritecond-request-filename-fd/2034/2

https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules

要从您的网址中移除.html扩展名,您可以在root / htaccess中使用以下代码:

 RewriteEngine on RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^ %{REQUEST_URI}.html [NC,L] 

注意:如果你想删除任何其他的扩展名,例如删除.php扩展名,只需在上面的代码中用php代替。

您将需要确保您有Options -MultiViews以及。

以上都不是标准cPanel主机上的工作。

这工作:

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

感谢您的回复。 我已经解决了我的问题。 假设我在http://www.yoursite.com/html下有我的页面,则应用以下.htaccess规则。

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /html/(.*).html\ HTTP/ RewriteRule .* http://localhost/html/%1 [R=301,L] RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /html/(.*)\ HTTP/ RewriteRule .* %1.html [L] </IfModule> 

我使用这个.htacess从我的网址删除.html extantion,请验证这是正确的代码:

  RewriteEngine on RewriteBase / RewriteCond %{http://www.proofers.co.uk/new} !(\.[^./]+)$ RewriteCond %{REQUEST_fileNAME} !-d RewriteCond %{REQUEST_fileNAME} !-f RewriteRule (.*) /$1.html [L] RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^.]+)\.html\ HTTP RewriteRule ^([^.]+)\.html$ http://www.proofers.co.uk/new/$1 [R=301,L] 
 RewriteRule /(.+)(\.html)$ /$1 [R=301,L] 

试试这个:)不知道它是否工作。