我的.htaccess
重定向规则有问题。
我需要将以.html
结尾的页面重定向到以斜杠结尾的页面。
/about-us.html
至/about-us/
但是也有一些页面需要重定向到没有.html
的特定页面,例如
/gallery/first-gallery/this-is-the-gallery.html
至/gallery/new/
问题是我的规则不能很好地协同工作,似乎重定向.html页面的规则忽略了所有其他规则。
这就是我的.htaccess
的样子
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/?(.*).(html)$ /$1 [R=301,L]
Redirect 301 /about-us/photo-gallery/17577-album-mca-corona-clay-tile-roof-princeton-texas/131173-58e29f485064eprinceton-texas-roofing-services-1.html /about-us/photo-gallery/17577-album-mca-corona-clay-tile-roof-princeton-texas/
Redirect 301 /about-us/photo-gallery/17577-album-mca-corona-clay-tile-roof-princeton-texas/131174-58e2a063b8b06princeton-texas-roofing-services-2.html /about-us/photo-gallery/17577-album-mca-corona-clay-tile-roof-princeton-texas/
#Many other 301 rules below
</IfModule>
因此,当我在浏览器中输入
domain.com/about-us/photo-gallery/17577-album-mca-corona-clay-tile-roof-princeton-texas/131173-58e29f485064eprinceton-texas-roofing-services-1.html
时,它会重定向到
domain.com/about-us/photo-gallery/17577-album-mca-corona-clay-tile-roof-princeton-texas/131173-58e29f485064eprinceton-texas-roofing-services-1
,在这里我需要此特定的重定向才能重定向到< br /> /about-us/photo-gallery/17577-album-mca-corona-clay-tile-roof-princeton-texas/
我尝试将RewriteRule ^/?(.*).(html)$ /$1 [R=301,L]
移到底部,希望上面的规则将首先处理,但这没有用。
我可以根据需要做些什么?
答案 0 :(得分:0)
首先,要先执行mod_alias
条规则之类的redirect
和mod_rewrite
RewriteRule
之类的mod_rewrite
。
有很多解决该问题的方法,例如从主重写器中排除所有其他重定向规则,但它认为如果其他规则mod_alias
具有仅省略URI最后一部分的相同目标,则可以制定以下规则:
redirect
以上规则将检查<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([^\/]+)/([^\/]+)/([^\/]+)/([^\/]+)\.(html)$ /$1/$2/$3 [R=301,L]
RewriteRule ^(.*)\.(html)$ /$1 [R=301,L]
</IfModule>
是否以URI
的形式出现/something/something/something/something.html
,然后将其重定向到/about-us/photo-gallery/17577-album-mca-corona-clay-tile-roof-princeton-texas/131173-58e29f485064eprinceton-texas-roofing-services-1.html
,如果不是这样,则第二条规则将被应用。
注意:清除浏览器缓存,然后进行测试