.htaccess - 强制 url 来自 'dir/page.html' → 'dir/page'
.htaccess - Force urls from 'dir/page.html' → 'dir/page'
我想删除特定文件类型的所有尾随扩展名(例如删除所有 .html
并让其他一切保持原样)
因此,例如,如果用户访问页面 <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
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/\.html -f [NC]
RewriteRule ^(.+?)/?$ pages/.html [L]
但不强制页面转到没有扩展名的版本。
添加
# From http://www.webweaver.nu/html-tips/web-redirection.shtml
RedirectMatch 301 (.*)\.html$
创建 404 未找到错误。
您可以在 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 ^(.+?)/?$ .html [L]
我想删除特定文件类型的所有尾随扩展名(例如删除所有 .html
并让其他一切保持原样)
因此,例如,如果用户访问页面 <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
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/\.html -f [NC]
RewriteRule ^(.+?)/?$ pages/.html [L]
但不强制页面转到没有扩展名的版本。
添加
# From http://www.webweaver.nu/html-tips/web-redirection.shtml
RedirectMatch 301 (.*)\.html$
创建 404 未找到错误。
您可以在 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 ^(.+?)/?$ .html [L]