【问题标题】:Virtual directory redirects虚拟目录重定向
【发布时间】:2013-04-01 05:41:27
【问题描述】:

我正在开发一个需要使用虚拟目录的链接系统。我设法设置了一个允许用户访问 domain.com/SjkpP/ 的系统,这与 domain.com/link.php?link=SjkpP 的效果相同,尽管尾部斜杠是必要的,并且当访问 domain.com 时/SjkpP 发生 404 错误。我在编辑和添加到 htaccess 文件方面非常糟糕,所以我想知道我可以添加什么来允许在没有尾部斜杠的情况下访问链接?

当前.htaccess

RewriteEngine on
RewriteRule ([A-Za-z0-9]+)/ link.php?link=$1

【问题讨论】:

  • 通过添加RewriteRule ^([A-Za-z0-9]+)$ /$1/修复

标签: .htaccess mod-rewrite


【解决方案1】:

如果你想让尾部斜杠可选,你可以使用这个来代替:

RewriteRule ^([A-Za-z0-9]+)/?$ link.php?link=$1

这使最后的斜杠成为可选的(使用正则表达式? 零或一匹配量词),但如果斜杠出现,则不会捕获它(因为斜杠出现在捕获虚拟目录名称的括号之外)。

请注意,由于您使用的是静默重定向,因此访问者的网络浏览器会认为它位于非公共根目录的目录中。因此,任何指向页面装饰(例如图像、CSS 或 JavaScript 文件)的相对路径(不以正斜杠开头)都会导致浏览器尝试不存在的子目录,但什么也得不到。但是,您当前的修复导致浏览器认为它位于子目录中,因此如果到目前为止您没有遇到任何问题,那么用这个替换您的规则应该不会导致新问题。

【讨论】:

    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 2011-02-12
    • 2011-12-15
    • 2011-09-19
    • 2011-04-06
    • 1970-01-01
    • 2010-11-17
    • 2011-12-26
    相关资源
    最近更新 更多