【发布时间】:2015-01-26 02:41:48
【问题描述】:
是否有一个 .htaccess 脚本可以不加修改地放入任何子目录 A 中,它会捕获对该子目录 A 以及更深的子目录 A/* 中的文件的所有请求并将其重写到子目录 A?原始浏览器 URL 应该保持不变,而且最好还是不修改 .htaccess 脚本。
例子:
domain.com/dir1/dir2 <-- this directory should become the endpoint
domain.com/dir1/dir2/dir3 <-- rewrite (keep browser URL intact) to /dir1/dir2
domain.com/dir1/dir2/dir3/dir4 <-- rewrite (keep browser URL intact) to /dir1/dir2
我使用以下脚本进行此操作,但该脚本需要我为我放入的任何目录更新它......
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /dir1/dir2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /dir1/dir2/ [L]
【问题讨论】:
-
我认为您在尝试中误解了 RewriteBase。它未使用,因为您的替换不是相对的。您需要捕获前两个子目录并将它们替换回例如^([^/]*)/([^/]*)/ /$1/$2
标签: apache .htaccess rewrite endpoint subdirectory