通过.htaccess重定向问题

时间:2011-09-07 15:11:24

标签: apache mod-rewrite redirect

我有一个php生成的文件,如: http://www.domain.com/?mod=test&act=view

我想创建一个从该地址重定向到以下内容: http://www.domain.com/view-test

这样每当用户(或机器人)访问第一个uri时,它就会被重定向到http://www.domain.com/view-test查看第一个uri的内容。

现在我的.htaccess下面有以下规则:

RewriteRule ^view-test$ /?mod=test&act=view [NC]
RewriteCond %{QUERY_STRING} mod=test&act=view
RewriteRule ^(.*)$ /view-test? [R,L]

第一个规则会创建一个“页面别名”,如果我删除其他两行(但不会按我的意愿重定向我的用户),则会有效。

在放置最后两条规则之后,我最终会在循环或其他内容中收到一条broswer消息,说“该页面未正确重定向”...

如果我删除第一条规则,则会收到404错误,说明找不到/ view-test

知道我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

我认为正则表达式更好。如果你的php处理程序是.htaccess

,那么这种情况的完整index.php文件
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} mod=(\w+)&act=(\w+)
RewriteRule ^$ /%2-%1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\w+)-(\w+)$ /index.php?mod=$2&act=$1 [L]

答案 1 :(得分:0)

忘记.htaccess它在php中更容易,我在我的网站中使用它,我创建了一个index.php文件来将用户从example.com重定向到example.com/123

在我的index.php中我把这个

<?php
header('Location: http://example.com/123');
?
>