我正在尝试重定向地址
的 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的任何人都知道为什么会这样?
我做错了什么?
提前致谢。
答案 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]
享受!