【问题标题】:generic htaccess script to make a subdirectory an endpoint by rewriting all sub-subdirectory requests to the subdirectory通过将所有子目录请求重写到子目录来使子目录成为端点的通用 htaccess 脚本
【发布时间】: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


【解决方案1】:

这条规则应该适合你:

RewriteEngine On    
RewriteRule . /dir1/dir2/ [L]

即匹配/dir1/dir2/ 中的任何文件/目录,而不仅仅是/dir1/dir2/,并重写为/dir1/dir2/ 的基础。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多