我的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 whithout .html时工作正常。我希望在索引结束时强制尾随斜线,但我不知道如何
是否有人知道如何修改我的代码以使尾部斜线有效?
谢谢!
答案 0 :(得分:1)
要向您的扩展程序中添加一个尾部斜杠,请输入较少的html网址,您需要修改这两个规则。
在第一条规则中,我们在目标网址的末尾添加一个尾部,以便在所有.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]
在测试之前清除浏览器! (希望,这有帮助!)
答案 1 :(得分: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]
效果很好