2015-09-05 70 views
1

我想删除一个spefic文件类型的所有尾随扩展名(例如删除所有.html,让一切按原样)网址的.htaccess - 力从“DIR/page.html中”→“DIR /页”

因此,例如,如果用户进入页面<my-site>/how-to/use-git.html,他将被重定向到<my-site>/how-to/use-git(有或没有尾随/)。任何其他请求(如<my-site>/how-to/img1.jpg)将保持原样(<my-site>/how-to/img1.jpg)。

在浏览的时候,我无法找到满足以下条件(两者):

  • 取出的.html
  • 部队去URL没有扩展

我尝试类似这样的事情

# From http://stackoverflow.com/questions/27553722/htaccess-mod-rewrite-how-to-modify-url-from-pages-pagename-cfm-to-pagename 
RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} \s/+pages/(.+?)\.html[\s?] [NC] 
RewriteRule^/%1/ [R=302,L,NE] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/pages/$1\.html -f [NC] 
RewriteRule ^(.+?)/?$ pages/$1.html [L] 

但它并不强制页面去版本没有扩展的sion。

添加

# From http://www.webweaver.nu/html-tips/web-redirection.shtml 
RedirectMatch 301 (.*)\.html$ $1 

创建404未找到错误。

回答

1

您可以在DOCUMENT_ROOT/.htaccess文件中使用这些规则:

RewriteEngine On 

# To externally redirect /path/file.html to /path/file 
RewriteCond %{THE_REQUEST} /(.+?)\.html[\s?] [NC] 
RewriteRule^/%1 [L,R=302] 

## To internally redirect /path/file to /path/file.html 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.+?)/?$ $1.html [L] 
+1

谢谢!我工作很棒! – leowzukw