这似乎应该是一件相对容易的事情,但我无法弄明白。我正在尝试使用htaccess文件重定向: http://www.example.com/page(或http://example.com/page) 至 http://www.example.com/page.htm
这是一个非常具体的案例,我不需要任何通配符或任何/ anything.htm的重定向 - 只有“/ page”到“/page.htm”
我做了一些搜索并发现反向(从/page.htm到/ page)和其他带有通配符的情况,但找不到像这样的非常具体的重定向。提前谢谢。
编辑:我遇到了麻烦,因为htaccess文件中出现了另一条规则是干扰:RewriteCond %{REQUEST_URI} !^/(admin|css|js|images|img|handouts|amp_sections|amp_sections\/handouts)($|/)
RewriteCond %{REQUEST_URI} !\.(gif|jpg|jpeg|js|png|bmp|ico|css|shtml|dat|xml|csv|txt|rtf|doc|docx|xls|xlsx|ppt|pptx)$
RewriteCond %{REQUEST_URI} !301
RewriteCond %{REQUEST_URI} !401
RewriteCond %{REQUEST_URI} !403
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /base.php?page=$1 [P,QSA]
因此,当我将页面的重定向规则放入page.htm时,输入example.com/page会将我带到http://www.example.com/page.htm?page=page,这显然不是预期的行为。我不知何故需要让“新”规则优先于另一个规则。
答案 0 :(得分:2)
在f(x)
:
.htaccess
这个规则基本上是取目录RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^page/?$ http://example.com/page.htm [L,R=302,NC]
,如果它被调用,它会将其更改为/page
。
确保在更改之前清除缓存。
我已将/page.htm
设置为302以进行测试,因为这会使其成为临时重定向。如果这适用于您,请将其更改为R
以使其成为永久重定向。
答案 1 :(得分:0)
您还可以使用 RedirectMatch
RedirectMatch 301 ^/page/?$ http://www.example.com/page.html
在测试此重定向之前清除浏览器缓存。