【问题标题】:.htaccess: Remove .html and add a trailing slash.htaccess:删除 .html 并添加尾部斜杠
【发布时间】:2019-12-27 15:13:42
【问题描述】:

我当前的 .htaccess 文件是:

## Go Daddy servers need the Options -MultiViews code below
Options -MultiViews
RewriteEngine On
RewriteBase /

# Remove .html extension
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.html
RewriteRule (.*)\.html$ /$1/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteCond %{DOCUMENT_ROOT}/%1.html -f
RewriteRule ^(.*)/$ $1.html [L]

# Force trailing slash
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule .*[^/]$ $0/ [L,R=301]

但是当我访问一个页面时,它显示“在此服务器上找不到请求的 URL /somepage/”。我该如何解决这个问题?

【问题讨论】:

    标签: html .htaccess mod-rewrite


    【解决方案1】:

    试试这个:

    Options -Multiviews
    RewriteEngine On
    RewriteBase /
    
    #Remove .html extension
    RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
    RewriteRule ^ %1/ [NC,L,R]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/?$ $1.html [NC,L]
    

    此规则从文件中删除 html 扩展名并在文件名末尾添加一个斜杠。

    在 Apache 2.4 上测试

    【讨论】:

    • 嗯,现在似乎从页面中删除了 CSS 和资产。
    • 如果 css 是问题,那么在你的文档头部添加这个
    • 不,你应该把 放在页面的 head 部分,在 和 标记之间,而不是放在 htaccess 中,
    • 有没有办法使用 .htaccess 文件来解决这个 CSS 问题?我用来编辑网站的程序会覆盖我对 HTML 所做的所有手动更改。
    • 在这里查看我的答案stackoverflow.com/questions/31241701/…
    【解决方案2】:
    # externally redirect /dir/file.php to /dir/file and remove index
    RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(?:html?|php)/?[\s?] [NC]
    RewriteRule ^ /%1%2 [R=301,L,NE]
    
    # remove trailing slash
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
    RewriteRule ^(.+?)/$ /$1 [R=301,L]
    
    # internally add php extension
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^(.+?)/?$ $1.php [L]
    
    # internally add html extension
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.html -f
    RewriteRule ^(.+?)/?$ $1.html [L]
    

    它适用于 css 和 js 等资产。也适用于斜杠。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2015-01-15
      • 2012-08-03
      • 1970-01-01
      • 2012-04-15
      相关资源
      最近更新 更多