HTACCESS目录重定向

时间:2012-12-03 15:05:51

标签: php apache .htaccess webserver

我正在尝试重定向地址
www.example.com/tops/articles/first_article
到地址
www.example.com/tops/test1.php?name=first_article

还要重定向地址
www.example.com/tops/galleries/first_gallery
到地址
www.example.com/tops/test2.php?name=first_gallery

和所有其他地址如
www.example.com/tops/first_page
到 的 www.example.com/tops/page.php?name=first_page

以下htaccess文件给我一个重定向循环。

RewriteEngine on
Options +FollowSymLinks

RewriteRule ^/tops/articles/(.+)$  /tops/test1.php?name=$1  [L]

RewriteRule ^/tops/galleries/(.+)$  /tops/test2.php?name=$1  [L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule (.*)$ ./page.php?name=$1
Doe的任何人都知道为什么会这样? 我做错了什么?

提前致谢。

3 个答案:

答案 0 :(得分:0)

你可以试试这个:

RewriteEngine On
RewriteRule ^tops/articles/([a-zA-Z0-9-=_.]+)/?$   http://www.example.com/tops/test1.php?name=$1 [L]
RewriteRule ^tops/galleries/([a-zA-Z0-9-=_.]+)/?$   http://www.example.com/tops/test2.php?name=$1 [L]
RewriteRule ^tops/([a-zA-Z0-9-=_.]+)/?$   http://www.example.com/page.php?name=$1 [L]

用这些规则替换所有3条规则。

所有字符的

更新

RewriteEngine On
RewriteRule ^tops/articles/([^/]*)/?$   http://www.example.com/tops/test1.php?name=$1 [L]
RewriteRule ^tops/galleries/([^/]*)/?$   http://www.example.com/tops/test2.php?name=$1 [L]
RewriteRule ^tops/([^/]*)/?$   http://www.example.com/tops/page.php?name=$1 [L]

.htaccess应该在根目录中如果它在/tops目录中,请尝试将其从模式和替换URL中删除。

答案 1 :(得分:0)

根目录(或任何其他非page.php目录中是否存在/tops/

如果没有,那么这可能是你的问题。您应该将最后一条规则更改为:

RewriteRule ^tops/(.*)$ /tops/page.php?name=$1

答案 2 :(得分:0)

好吧,我终于明白了。

以为我分享了,所以如果每个人都在搜索这个问题,他就会找到它。

以下是工作的代码:

RewriteEngine on
Options +FollowSymLinks

RewriteRule ^articles/(.+)$ ./test1.php?name=$1 [L]

RewriteRule ^galleries/(.+)$ ./test2.php?name=$1 [L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule (.*)$ ./page.php?name=$1 [L]

享受!