htacces重写规则尾随斜杠和一个页面作为其他页面的子页面

时间:2018-03-10 11:04:05

标签: apache mod-rewrite

朋友您好我有搜索批次但找不到解决我重写网址问题的解决方案。

我的网站有a.html和b.html页面,希望他们有这样的链接 mywebsite.com/a/而不是mywebsite.com/a.html

和 mywebsite.com/a/b/而不是mywebsite.com/b.html

这两个页​​面都存在于根目录中。那么如何在htaccess文件中使用apache重写规则。

1 个答案:

答案 0 :(得分:0)

试试这个:

RewriteEngine on 
RewriteCond %{THE_REQUEST} \s/+([^\/]+)?(?:index)?(a)\.html[\s?/] [NC]
RewriteRule ^a\.html$ /%1%2 [R=302,L,NE]
RewriteRule ^a/$ /a.html [L]

RewriteCond %{THE_REQUEST} \s/+([^\/]+)?(?:index)?(b)\.html[\s?/] [NC]
RewriteRule ^b\.html$ /a/%1%2/ [R=302,L,NE]
RewriteRule ^a/b/$ /b.html [L]
RewriteCond  %{REQUEST_URI} ^/(b)\/?$
RewriteRule ^ /a/%1/ [R=302,L,NE]
RewriteCond  %{REQUEST_URI} ^(/a/b)$
RewriteRule ^  %1/ [R=302,L,NE]

因此,上面的代码将与/a.html , /a or /a/匹配,然后在外部将其更改为/a/,并在内部将其重定向到/a.html

同样匹配/b.html ,/b or /b/,然后在外部将其更改为/a/b/,并在内部将其重定向到/b.html

注意:清除浏览器缓存并对其进行测试,如果是,请将302更改为301以获得永久重定向。