这是我当前的htaccess:
DirectoryIndex main.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ main.php/$1 [QSA,L]
SetEnvIf MFW_ENV ^$ MFW_ENV=local
php_flag short_open_tag On
php_value memory_limit "2G"
php_value upload_max_filesize "2G"
php_value post_max_size "2G"
我的 htaccess 已打开:
/project/web/
我的 上有 文件
/project/local
我希望在访问时可以访问
/project/web/local
我正在这样做,所以当我访问时
website.com/local/file.zip
我可以访问:
/project/local/file.zip
相反。这是我的网络目录的上一级。
您可以在
/project/web/.htaccess:
中拥有此规则
SetEnvIf MFW_ENV ^$ MFW_ENV=local
php_flag short_open_tag On
php_value memory_limit "2G"
php_value upload_max_filesize "2G"
php_value post_max_size "2G"
DirectoryIndex main.php
RewriteEngine On
RewriteBase /project/web/
RewriteCond %{DOCUMENT_ROOT}/project/$1 -f
RewriteRule ^(local/.*)$ /project/$1 [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ main.php/$1 [L]
由于
../
不是 .htaccess
文件中的选项,因此让服务器继续重定向,直到到达根目录。这会完全重定向到上一级,直到找到目录或文件:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\/(.*)\/(.*)$ /$1 [R=302,L]
请记住,第一个
(.*)
是最后 2 个斜杠之前的所有内容(在本例中)。它读起来像是第一个目录,但事实并非如此。
您可以在开发工具网络中看到它从
/dir1/dir2/dir3/dir4/someFile.html
到 /dir1/dir2/dir3/dir4/
到 /dir1/dir2/dir3
等等。
这是
302
重定向 404 Not Found
资产的一个很好的用例,这样浏览器就不会缓存最终 URL,这将避免返回任何父目录,即使文件存在。