3

ここで行き詰まりました。なぜ機能しないのかを理解しようと頭を悩ませています。

これは、URLを次のように取得したいです

 example.com/news/top/

から

 example.com/index.php?view=news&task=top

しかし、「タスク」が次のような異なるものになるようにする必要があります

 example.com/index.php?view=news&task=newest
 example.com/index.php?view=news&task=help
 example.com/index.php?view=news&task=write
 ....

現在の .htaccess は次のようになります。

DirectoryIndex index.php
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/([^/\.]+) index.php?view=$1&task=$2

www.example.com/news/ にアクセスすると、index.php のみがロードされ、?view=news は渡されません。

www.example.com/news/top/ にアクセスすると、問題なく動作します。

しかし、次のように .htaccess に新しい行を追加して、両方を機能させる必要があります。

RewriteRule ^news/ index.php?view=news

その場合、www.example.com/news/ へのアクセスは正常に機能しますが、www.example.com/news/top/ へのアクセスではタスクの値を取得できません。

私を助けてください!

前もって感謝します。

4

2 に答える 2

0

私はhtaccessのベテランではありませんが、次のようなものがうまくいくかもしれません:

RewriteRule /news/(.*) /index.php?view=news&task=$1 [L]

これにより、/news/abc へのすべてのリクエストが index.php?task=news&view=abc に書き換えられるはずです。$1後方参照は、括弧で囲まれた RegEx の最初のパターンを表します。

于 2013-10-07T22:09:04.533 に答える