[英]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.