【问题标题】:.htaccess Rewrite to Force Trailing Slash after remove .html.htaccess 在删除 .html 后重写以强制尾随斜杠
【发布时间】:2016-04-30 11:09:45
【问题描述】:

我的 htaccess 文件中有以下代码:

Options -Indexes
RewriteEngine On

# Redirect external .php requests to extension less url
RewriteCond %{THE_REQUEST} ^(.+)\.html([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.html$ http://%{HTTP_HOST}/foo/$1 [R=301,L]

# Resolve .html file for extension less html urls
RewriteRule ^([^/.]+)$ $1.html [L]

当我访问 www.mydomain.com/foo/index 而没有 .html 时,它工作得很好。我想在索引末尾强制使用斜杠,但我不知道如何

有谁知道如何修改我的代码以使尾部斜杠起作用?

谢谢!

【问题讨论】:

标签: .htaccess mod-rewrite


【解决方案1】:

为此我修改了我的代码:

Options -Indexes
RewriteEngine on

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

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.]+\.html(\?[^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.html$ http://%{HTTP_HOST}/fr/$1 [R=301,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ http://%{HTTP_HOST}/fr/$1/ [R=301,L]

效果很好

【讨论】:

  • 现在我将在 url 中隐藏 fr 文件夹。我需要你的帮助,因为我没有找到任何关于这个问题的结论。谢谢谢谢!
【解决方案2】:

要在你的扩展少 html url 中添加一个斜杠,你需要修改你的两个规则。

在第一条规则中,我们在目标 url 的末尾添加一个尾随,以便在所有 .html 请求中添加一个斜杠。

在第二条规则中,我们在正则表达式模式的末尾添加一个斜杠以接受带有斜杠的请求。

Options -Indexes
RewriteEngine On

# Redirect external .php requests to extension less url
RewriteCond %{THE_REQUEST} ^(.+)\.html([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.html$ http://%{HTTP_HOST}/foo/$1/ [R=301,L]

# Resolve .html file for extension less html urls
RewriteRule ^([^/.]+)/?$ $1.html [L]

在测试之前清除您的浏览器! (希望,这会有所帮助!)

【讨论】:

  • 感谢您的帮助!我会试试你的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 2022-07-22
  • 2017-08-31
  • 1970-01-01
  • 2015-01-15
相关资源
最近更新 更多