mod_rewrite来改变我的网址

时间:2010-04-18 20:42:16

标签: apache mod-rewrite

我一直在与mod-rewrite斗争一段时间。

基本上,我有一个网站,我正在转移到一个不同的命名空间/目录。

我想做的是更改看起来像这样的网址:

http://mydomain.com/index.php?a=xxxxxxxxxx

这些网址将始终包含“index.php?a =”。我有一个不同的/新网站也有一个index.php文件,所以只有当a =在URL中时才重写。

新网址应该像

http://mydomain.com/ns1/index.php?a=xxxxxxxxxxx

看起来很简单,但我似乎无法让mod_rewrite为我做这件事,这就是我所拥有的:

#将旧网址重写为新的命名空间
RewriteRule ^ / index.php \?a =(。*)$ /gc1/index.php\?x=1&a=$1 [R = 301,L]

看错了什么?

3 个答案:

答案 0 :(得分:1)

您可以使用此规则为路径添加前缀:

RewriteRule !^ns1/ /ns1%{REQUEST_URI} [L]

如果路径尚未启动,则此规则将URI路径前缀为/ns1

答案 1 :(得分:1)

我相信RewriteRule仅对路径有效(即,它不会考虑您添加的任何查询参数。)

你最好在PHP文件本身中这样做。

// On old site
if($_GET['a']=="xxxxxxx"){
header("Location: /ns1/index.php?a=".$_GET['a']);
die();
}

答案 2 :(得分:0)

感谢你们两位。

我能够做到:

# rewrite old urls to new ns1 namespace
RewriteCond %{QUERY_STRING} ^a=.*$
RewriteCond %{REQUEST_URI} !^/ns1/.*$
RewriteRule ^(.*)$ ns1$1 [R=301,L]