-1

URLのhtaccess書き換えコードを作成したので、ユーザーがURLにアクセスすると表示されますが、2番目または3番目のページを作成して、ユーザーに表示されるようにしmyurl.com/testing/ます。index.php?page=testingmyurl.com/testing/2832/9283index.php?page=testing&var1=2832&var2=9283

これは私が現在持っているコードです:

RewriteRule ^([^\/]+)/([^\/]*)/$ index.php?page=$1&var1=$2
RewriteRule ^([^\/]+)/([^\/]*)$ index.php?page=$1&var1=$2

これは機能しますが、変数をオプションにしたいです。2番目の変数がない場合(つまり、myurl.com/testing/)、ファイルが見つからないと表示されます。

4

2 に答える 2

1
# 3-level deep parameters
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(/([^/]+))?(/([^/]+))?(/)?$ /index.php?page=$1&var1=$3&var2=$5 [QSA,L]
  1. このルールは、既存のファイルやフォルダーには影響しません。

  2. このルールは書き直します:

    • /help/tracking/123456/=>/index.php?page=help&var1=tracking&var2=123456
    • /help/tracking=>/index.php?page=help&var1=tracking&var2=
    • /help=>/index.php?page=help&var1=&var2=

ルールがpage=index.phpすでに書き換えられたURLを書き換えるために発生していました(多くの人は、書き換えが発生すると、次の反復に進み、すべてのルールのテストを再開することを忘れています。このルールには、既存のファイルとフォルダーを無視するための条件(追加のチェック)があります。

于 2011-07-23T11:23:28.613 に答える
0

ケースごとに複数のRewriteRulesを設定しないのはなぜですか?

RewriteRule ^([^/]+)/?$ index.php?page=$1
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?page=$1&var1=$2
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?page=$1&var1=$2&var2=$3
于 2011-07-23T10:01:59.447 に答える