2012-12-03 206 views
0

我想
www.example.com/tops/articles/first_article
重定向地址到地址
www.example.com/tops/test1.php?name = first_article.htaccess的目錄重定向


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

請告訴我什麼是缺失的,所以我會知道下一次。 –

+0

特別是模式'/ tops' –

回答

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中移除。

+0

中第一個子目錄的第一個斜槓不符合我的要求。 –

+0

這是你的要求! –

+0

問題是我沒有詳細說明我的要求。 它需要引用所有的文字,而不僅僅是您提供的文字。 我不得不提到的另一件事是,htaccess文件位於http://www.example.com/tops –

0

page.php是否存在於根目錄(或其他任何非/tops/目錄)?

如果不是,那麼這可能是你的問題。你應該改變你的最後一條規則,如:

RewriteRule ^tops/(.*)$ /tops/page.php?name=$1 
+0

第三條規則完美運作。我沒有問題。問題在於第一條和第二條規則。 –

+0

@Amit Aisikowitz你可以不用斜線來嘗試:'^ tops /'而不是'^/tops /'。 – jeroen

0

嗯,我終於得到它的工作。

以爲我分享它,所以如果有人每次搜索這個問題,他都會找到它。

這裏是workd代碼:

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] 

享受!