2010-04-18 78 views
0

我一直在與mod重寫戰鬥了一段時間。mod_rewrite來改變我的網址

基本上,我有一個網站,我正在轉移到一個不同的命名空間/目錄。

我想什麼做的是改變的URL看起來像這樣的:「一個的index.php =」

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

這些URL會一直有。我有一個不同的/新站點,它也有一個index.php文件,所以重要的是我只有在URL中存在=時才進行重寫。

新的URL應該像

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

看起來很簡單,但我似乎無法得到的mod_rewrite做到這一點對我來說,這是我有:

#重寫舊URL到新的命名空間
重寫規則^/index.php的\θA =(。*)$ /gc1/index.php\?x=1 &一個= $ 1 [R = 301,L]

看到任何東西錯誤?

回答

1

您可以使用此規則的前綴添加到路徑:

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

此規則如果路徑尚未與它開始/ns1前綴的URI路徑。

0

我相信,重寫規則只適用於路徑(即它不會考慮您添加的任何查詢參數。)

你可能最好的PHP文件本身做這個。

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

感謝你們倆。

我能做到這一點:

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