2012-01-23 88 views
0

我試圖創建一個從http://example.com/links/AAAhttp://links.example.net/l/AAA(其中AAA是一個變量)的重定向。我有這個工作。問題是http://example.com/links/http://example.com/links應該重定向到http://links.example.net(沒有/l/)。.htaccess跨域重定向

此刻http://example.com/links/重定向到http://links.example.net/l/example.com/links重定向到http://links.example.net/l//hsphere/local/home/username/example.com/links

當前.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} (.+)$ [NC] 
    RewriteRule ^(.*)$ http://links.example.net/l/$1 [R=301,L] 
</IfModule> 

僞代碼:

if ($path) { 
    goto(http://links.example.net/l/${path}/); // Adding the trailing slash is not necessary, but would be handy. Obviously, don't add if it already exists. 
} else { 
    goto(http://links.example.net/); 
} 

我走過一堆其他.htaccess問題在這裏看着(好傷心有這麼多),但還沒有找到任何等價。

如果需要,我可以做到這一點不同的方式:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.+)$ index.php/$1 
</IfModule> 

,然後執行重定向在PHP中,在那裏我是有點多在家裏。但是那樣會(a)效率較低,(b)樂趣較少,以及(c)教育程度較低。所以我會試着以正確的方式做到這一點。

回答

2

以下是一種方法,假設您的.htaccess文件位於您的網站的根目錄中。

RewriteEngine on 
RewriteBase/

#if /links or links/ (path empty) 
RewriteCond %{REQUEST_URI} ^/links/?$ [NC] 
RewriteRule^http://links.example.net [R=301,L] 

#otherwise 
RewriteRule ^links/(.*)$ http://links.example.net/l/$1 [R=301,NC,L] 
+0

謝謝。我會在明天早上嘗試第一件事並回報給你。 – TRiG