【发布时间】:2016-09-10 02:21:57
【问题描述】:
这是我的问题:
假设我有一个网站www.example.com。我有一个应用程序subdir 位于该域的文档根目录的子目录中:
/home/example/public_html/subdir/
subdir 包含此.htaccess:
# Redirect trailing slash if not a directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /subdir/$1 [L,R=301]
它有效。如果我转到http://www.example.com/subdir/not_a_directory/(显然假设not_a_directory 不是目录),我会被重定向到http://www.example.com/subdir/not_a_directory,这就是我想要的。
但我不想在重写规则或.htaccess 中的任何地方指定subdir。我希望能够在不破坏任何东西的情况下更改应用程序的路径。我尝试了以下...
# Redirect trailing slash if not a directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [L,R=301]
但我被重定向到:http://www.example.com/home/example/public_html/subdir/not_a_directory
我有点理解为什么会发生这种情况(重写规则的相对路径返回文件系统路径,而绝对或根绝对路径返回 URL),但我不知道如何实现我正在寻找的为。
有没有办法让RewriteRule 中的捕获组包含路径的subdir 部分?我也尝试设置RewriteBase /,但它似乎并没有改变任何东西。
重写规则让我很困惑,所以任何帮助都将不胜感激。谢谢!
【问题讨论】:
标签: apache .htaccess mod-rewrite url-rewriting