6 .htaccess重写:删除index.html,删除.html,强制非www,强制尾随斜杠

时间:2016-08-03 02:48:34

标签: php html wordpress .htaccess mod-rewrite

我提供有关我网站环境的一些信息

  1. 我在根目录中有静态网页。

  2. Wordpress安装在子词典www.domain.com/blog/

  3. 我有两个.htaccess,一个在根中,一个在wordpress中 文件夹中。

  4. 我想

    • www至非所有网址<下面代码DID it:)
    • 从网址<删除index.html下面代码DID it:)
    • 删除所有.html扩展程序/将301重定向到网址 没有.html扩展名<下面代码DID it:)
    • 向静态网页添加尾部斜杠/从非尾部斜杠重新指向301 <<我需要帮助
    • 强制斜杠到Wordpress网页/从非尾部斜杠重新指向301 <下面代码DID it:)

    一些例子

    domain.tld / index.html>>使用domain.tld /

    domain.tld / file.html>>使用domain.tld /文件/

    domain.tld / file.html />>使用domain.tld /文件/

    domain.tld / wordpress / post-name>>使用domain.tld / WordPress的/后名称/

    ROOT htaccess中的代码是

        <IfModule mod_rewrite.c> 
        Options +FollowSymLinks -MultiViews
    
    
        RewriteEngine On 
        RewriteBase /
    
        #removing trailing slash
        RewriteCond %{REQUEST_FILENAME} !-d     
        RewriteRule ^(.*)/$ $1 [R=301,L]
    
        #www to non
        RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?domain\.com)$ [NC]
        RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]
    
        #html
        RewriteCond %{REQUEST_FILENAME} !-f 
        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteRule ^([^\.]+)$ $1.html [NC,L]
    
        #index redirect 
        RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ 
        RewriteRule ^index\.html$ http://domain.com/ [R=301,L]
        RewriteCond %{THE_REQUEST} \.html 
        RewriteRule ^(.*)\.html$ /$1 [R=301,L] 
        </IfModule> 
    
        <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /blog/
        # Force Trailing Slash for wordpress
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)[^/]{1}$ %{REQUEST_URI}/ [L,R=301]
        </IfModule> 
    

    以上代码

    1. 将www重定向到非www
    2. 删除末尾的尾部斜杠(如果存在)
    3. 删除index.html
    4. 删除所有.html
    5. 将301重定向到文件名而不在末尾添加斜杠
    6. 强制跟踪斜杠为wordpress,并从末尾的非尾部斜杠重定向301
    7. 修改

      #removing trailing slash Rule usage
      

      removing trailing slash Rule

2 个答案:

答案 0 :(得分:1)

对于网站root .htaccess:

这样做
<IfModule mod_rewrite.c> 
Options +FollowSymLinks -MultiViews

RewriteEngine On 
RewriteBase /

#www to non
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?domain\.com)$ [NC]
RewriteRule ^(.+?)/?$ http://%1/$1/ [R=301,L]

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

#index redirect 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ 
RewriteRule ^index\.html$ http://%{HTTP_HOST}/ [R=301,L]

# add a trailing slash to non files
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=301,NE]

# add html internally
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^.]+)/$ $1.html [L]

</IfModule>

确保在测试前清除浏览器缓存。

答案 1 :(得分:0)

RewriteEngine On 

RewriteBase /   

WWW to Non

RewriteCond %{HTTP_HOST} ^www.domain\.tld$ [NC]

RewriteRule ^(.*)$ http://domain.tld/$1 [L,R=301]

从网址

中删除index.html
RewriteRule ^index.html$ / [L,R=301]

删除所有.html扩展名/将301重定向到不带.html扩展名的网址

RewriteRule ^([a-zA-z0-9]+).html$ /$1   [L,R=301]

向静态网页添加尾部斜杠/从非尾部斜杠重新定向301

RewriteRule ^([a-zA-z0-9]+).html$ /$1/   [L,R=301]

强制斜杠到Wordpress网页/从非尾部斜杠重新指向301

RewriteRule /blog/([^/]+) /blog/$1/ [L,R=301]