我正在處理位於mysite.com/dir/.htaccess中的.htaccess文件,如果可能,將mysite.com/dir/page重定向到mysite.com/dir/page.php如果不可能的話,重定向到mysite.com/dir/。所以任何「錯誤」的請求都會被重定向到主頁面。我使用的代碼是:mod_rewrite:動態重定向和目錄阻止
RewriteEngine on
# determine DIR_BASE dynamically
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=DIR_BASE:%1]
# see if .php is found
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}\.php -f
RewriteRule ^(.*)$ $1.php
# if not found redirect to %{ENV:DIR_BASE}
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule^%{ENV:DIR_BASE} [R]
這一切都很好。 (順便說一句:我想確定文件的基本目錄,因爲我可能想稍後更改目錄名稱,但不更改文件)。我現在想要的是阻止用戶的某些目錄,因爲它們包含不應該可訪問的php庫。我怎麼能請阻止目錄mysite.com/dir/lib/*和mysite.com/dir/lib2/*並將它們重新定向到mysite.com/dir/,就像我以前一樣?我也想用代碼不喜歡
RewriteRule ^lib/(.)* %{ENV:DIR_BASE}
會重定向mysite.com/dir/lib/../page主網頁,而不是mysite.com/dir/page它應該屬於。我非常想用%{REQUEST_FILENAME}和%{REQUEST_URI},但我只是一個初學者,當談到mod_rewrite。你知道一個解決方案嗎?
是的,它確實工作得很好,非常感謝你。這也是你第二次爲我回答問題嗎? – Sirac
是的,我記得。很高興這次再次運作。 – anubhava