簡體   English   中英

目錄內部的Mod_Rewrite不正確匹配

[英]Mod_Rewrite inside directory not matching correctly

所以我有一個根文件夾,因為它是.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內部,我有一個.htaccess試圖用來測試mod_rewrite。 內容如下:

<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上查看頁面。 任何幫助都是極好的!!

我只是想通了。 確保檢查您的Apache版本!!! 1.x版無法識別與Perl兼容的正則表達式,而是使用POSIX擴展正則表達式。 將上面的.*重寫為[A-Za-z0-9/=-_']+對我[A-Za-z0-9/=-_']+ 我將不得不繼續閱讀POSIX風格的內容,以了解如何接受句點(。),但它現在可以使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM