0

したがって、.htaccess (WordPress ビルド) であるため、これを含むルート フォルダーがあります。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

その中に safetytraining-2 というサブディレクトリがあります。サブディレクトリへのリクエストは正常に機能し、safetytraining-2 に true.php というファイルがあり、その内容は次のとおりです。

<html>
   <body>
      <?php var_dump($_GET);
      ?>
   </body>
</html>

現在、safetytraining-2 内に、mod_rewrite をテストしようとしている .htaccess があります。その内容は次のとおりです。

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteCond  %{THE_REQUEST}      ^true\.php(.*)$
   RewriteRule  ^true\.php(.*)$     -                   [L]

   RewriteRule  ^(.*)$          true.php?p=$1       [L]
</IfModule>

ここで問題です。website.com/safetytraining-2/foobar にアクセスすると、次の出力が得られます。

array(1) { ["p"]=> string(8) "true.php" }

それは本当に私のがらくたを混乱させています。最初のルールに、Apache が再帰的に書き換えルールを適用するのを止めようとする条件を付けましたが、役に立たなかったと思います。/safetytraining/ の後に何を入力しても、この出力が得られ続けます。ここで何か助けはありますか?athanclark.com/safetytraining-2 でページを表示できます。どんな助けでも素晴らしいでしょう!!

4

1 に答える 1

0

私はちょうどそれを理解しました。Apache のバージョンを確認してください!!! バージョン 1.x は Perl 互換の正規表現を認識せず、POSIX 拡張正規表現を使用します。.*上記の s を書き直すと[A-Za-z0-9/=-_']+うまくいきます。ピリオド (.) を受け入れる方法を確認するには、POSIX スタイルのものをさらに読む必要がありますが、今のところは機能します。

于 2012-12-12T04:18:17.007 に答える