我在我的.htaccess文件中使用了以下内容,但似乎没有正常工作。重定向301在第一次重定向后不工作
Redirect 301 top_users.php http://example.com/top-users
RewriteRule ^top-users/?$ top_users.php
Redirect 301 register.php http://example.com/register
RewriteRule ^register/?$ register.php
Redirect 301 register.php?log=1 http://example.com/login
RewriteRule ^login/?$ register.php?log=1
顶级用户页面似乎工作正常,如果我直接进入/ login或/ register,但重定向不起作用,它工作正常。我已经尝试在重定向页面名称前添加正斜杠,但它给了我错误的路径,并说它找不到。
任何想法?
编辑:
UPDATE:
我所用的是如下,感谢乔恩林的帮助最终代码。
RewriteEngine On
RewriteBase/
Options +FollowSymLinks
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /top-users(/|$|\)
RewriteRule ^top-users(/|$|\) top_users.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /top_users\.php
RewriteRule ^top_users\.php$ http://example.com/top-users/ [R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /register(/|$|\)
RewriteRule ^register(/|$|\) register.php [L]
# check if request for register.php does not include log=1 in query string
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /register\.php
RewriteCond %{QUERY_STRING} !log=1
RewriteRule ^register\.php$ http://example.com/register/ [R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /login(/|$|\)
RewriteRule ^login(/|$|\) register.php?log=1 [L,QSA]
# check if request for register.php includes log=1 in query string
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /register\.php
RewriteRule ^register\.php$ http://example.com/login/? [R=301]
我试过这种方式,它只是重定向,如我以前的评论中所述。有什么我可以阻止它正常工作吗? – john
@johnwilliams对不起,误解了你的问题。我编辑了我的答案 –
现在去某个地方。访问register.php罚款重定向/ register /,但抛出一个404注册没有正斜杠出于某种原因?访问register.php?log = 1将重定向到登录/?log = 1,当我希望它只是/ login /,但它的一半。 top_users.php仍然返回top_users.php。访问'/ login /'和'/ register /'可以正常工作,但'最高用户/'是404。我从来没有想过这会变得很复杂。我感谢您的帮助。 – john