2013-05-08 32 views
0

我想重定向這個網址中使用htaccess RewriteRule如何使這個htaccess的重定向正確

news/tags/video to news.php?t=video 
news/tags/interview to news.php?t=interview 
news/tags/news to news.php?t=news 

網址:news.php?t=video, news.php?t=interview, news.php?t=news工作正常,我正確recive的「T」變種。但是,當我申請htaccess RewriteRules的「T」變種不通過。

這是我的代碼:

​​
+0

可能重複:http://stackoverflow.com/questions/1597794/mod-rewrite-passing-variables – 2013-05-08 09:06:12

回答

1

重寫按照匹配的順序處理。如果存在其他規則,迴歸真正的第一您的重定向狀態可能會不匹配。在你的情況下,在達到你的附加規則之前找到了一場比賽。

<IfModule mod_rewrite.c> 
    RewriteRule ^news/tags/([^/]+)/?$ news.php?t=$1 [L] 
    RewriteRule ^news[/]?$ news.php [L] 
    RewriteRule ^news/([^/]+)[/]?$ news_article.php?idN=$1 [L] 
</IfModule> 
1

圖案^news/(.+)[/]?$匹配news/tags/video(等)和重寫的URL news_article.php並沒有進一步匹配是可能的。您需要稍微調整此規則:

RewriteRule ^news/?$ news.php 
RewriteRule ^news/([^/]+)/?$ news_article.php?idN=$1 
RewriteRule ^news/tags/video/?$ news.php?t=video 
RewriteRule ^news/tags/interview/?$ news.php?t=interview 
RewriteRule ^news/tags/news/?$ news.php?t=news 
0

請把這個RewriteRule指令您的代碼:

RewriteRule ^news/(.+)[/]?$ news_article.php?idN=$1 

...這一個:

RewriteRule ^news/([^/]+)[/]?$ /news_article.php?idN=$1 

因爲以前的規則匹配的一切,包括「/」削減。而剛剛使用下面這個單一規則爲您#problem rules解決方案:

RewriteRule ^([^/]+)/tags/([^/]+)[/]?$ /$1.php?t=$2