0

を使用してこの URL をリダイレクトしたいhtaccess RewriteRule:

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

URL:news.php?t=video, news.php?t=interview, news.php?t=newsは正常に動作しており、「t」var を正しく受信しています。しかしhtaccess RewriteRules、「t」変数を適用すると渡されません。

これは私のコードです:

<IfModule mod_rewrite.c>
    #this rules are working fine
    RewriteRule ^news[/]?$ news.php
    RewriteRule ^news/(.+)[/]?$ news_article.php?idN=$1

    #problem rules
    RewriteRule ^news/tags/video[/]?$ news.php?t=video
    RewriteRule ^news/tags/interview[/]?$ news.php?t=interview
    RewriteRule ^news/tags/news[/]?$ news.php?t=news
</IfModule>
4

3 に答える 3

1

パターンが^news/(.+)[/]?$一致しnews/tags/video(etc)、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
于 2013-05-08T09:05:41.960 に答える
1

書き換えは一致した順に処理されます。最初に true を返す他のルールが存在する場合、リダイレクトの状態は一致しない可能性があります。あなたの場合、追加のルールに到達する前に一致が見つかりました。

<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>
于 2013-05-08T09:05:50.197 に答える