0


アドレスwww.example.com/tops/articles/first_article
をアドレスwww.example.com/tops/test1.php?name=first_articleにリダイレクトしようとしています


また、アドレス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

それがなぜなのか、誰にもわかりませんか?私は何を間違っていますか?

前もって感謝します。

4

3 に答える 3

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 から削除してみてください。

于 2012-12-03T15:29:12.603 に答える
0

やれやれ、やっと動くようになった。

私はそれを共有していると思ったので、誰かがこの質問を検索すると、彼はそれを見つけるでしょう.

機能したコードは次のとおりです。

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]

楽しみ !

于 2012-12-04T03:34:13.767 に答える
0

page.phpルート ディレクトリ (またはその他の/tops/ディレクトリ以外) に存在しますか?

そうでない場合、それはおそらくあなたの問題です。最後のルールを次のように変更する必要があります。

RewriteRule ^tops/(.*)$ /tops/page.php?name=$1
于 2012-12-03T15:34:19.540 に答える