如果用户转到网址
http://example.com
服务器执行302 Moved
并转到http://example.com/en/home/my-page.html
如果网址
,我想要的是什么http://example.com/en/home/my-page.html
浏览器应该只显示http://example.com/en/
我已经尝试过.htaccess了:
RewriteEngine on
RewriteCond %{THE_REQUEST} ^en/home/my-page\.html
RewriteRule ^en/ /en/home/my-page\.html [R=301,L]
RewriteRule ^index.php$ en/home/my-page\.html [L,R=301]
但它什么也没做。我做错了什么?
答案 0 :(得分:1)
你的正则表达式模式是错误的。
您可以在站点根目录中使用这些规则.htaccess:
RewriteEngine on
# externally redirect /en/home/my-page.html to /en/
RewriteCond %{THE_REQUEST} \s/+en/home/my-page\.html[?\s/]
RewriteRule ^ /en/ [R=301,L]
# internally rewrite /en/ to /en/home/my-page.html
RewriteRule ^en/?$ en/home/my-page\.html [L,NC]
在测试此更改之前,请不要忘记清除浏览器缓存。
答案 1 :(得分:0)
此代码将重定向用户点击
http://example.com/en/my-page.html
到
http://example.com/en/
并且将内部重定向thr请求到index.php(你可以用index.php所在的目录替换参数,或者如果它在主目录中则删除它)
RewriteRule ^en/my-page\.html$ /en/ [L,R=301]
RewriteRule ^en/ /<dir>/index.php [L]