2012-10-16 135 views
4

我希望它显示的网址为 /index.php?page=somePage&id=someID&siteAddress=someAddress/someAddress/?page=somePage&id=someID如何使用.htaccess重写此网址

我该如何使用重写规则呢?

+0

哪里' someAddress'来自?这是'siteAddress'查询字符串参数的值吗? –

+0

固定为更清晰的措辞。 siteAddress应该等于someAddress,即在两个正斜杠之间提供的值。 – user1748794

回答

0

要在内部重写/someAddress的index.php

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{QUERY_STRING} ^page=([^&]+)&id=([^&]+)$ 
RewriteRule ^/?([^/]+)/$ /index.php?page=%1%id=%2&siteAddress=$1 [L] 

在外部重定向的index.php/someAddress

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=([^&]+)&id=([^&]+)&siteAddress=(^[&\ ]+) 
RewriteRule^/%3/?page=%1&id=%2 [L,R=301] 
+0

我想在内部重写它,所以我将该代码添加到.htaccess。但该网站没有显示结果页面。该网站是http://public.forumzbb.com/test/?page=register&id=null。我应该在页面上看到的是http://public.forumzbb.com/index.php?page=register&id=null&siteAddress=test。是的,它应该显示为一个简单的“网站未安装”。文本。感谢您的帮助:) – user1748794

+0

@ user1748794您是否将这些规则放置在文档根目录下的htaccess文件的顶部?你确定mod_rewrite已打开吗?你的虚拟主机/服务器配置中是否设置了'AllowOverride All'? –

+0

哎呀,谢谢。现在解决了,只是忘了在文件的顶部放置'RewriteEngine On'。再次感谢你 :) – user1748794