htaccess使不同的页面充当主页

时间:2016-10-15 09:01:14

标签: php .htaccess

如果用户转到网址

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]

但它什么也没做。我做错了什么?

2 个答案:

答案 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]