【问题标题】:htaccess directoryhtaccess 目录
【发布时间】:2009-08-28 18:06:20
【问题描述】:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/([^/]+)/([^/]+).php website.com/admin/index.php?route=$1/$2 [NS]
RewriteRule ^modules/([^/]+)/([^/]+).php website.com/admin/index.php?route=$1/$2 [NS]

以上内容适用于您登录时。它转到/admin/modules/catalog,但是当您单击状态栏中显示为/admin/vendors/ 的链接时,它不起作用????哪些供应商是子目录或模块/

任何想法

【问题讨论】:

  • 您应该更具体地了解实际错误是什么。

标签: .htaccess mod-rewrite url-rewriting


【解决方案1】:

考虑到文档中关于RewriteCond 的内容以及您得到的内容,我想说 RewriteConditions 仅适用于以下一个 RewriteRule:

RewriteCond 指令定义了一个 规则条件。一个或多个 RewriteCond 可以在 RewriteRule 之前 指示。那么下面的规则就是 仅在两者的当前状态下使用 URI 匹配它的模式,如果 满足这些条件。

如果您尝试在第二个 RewriteRule 前面复制那些 RewriteCond 怎么办?至少作为测试?


这是关于 S|Skip 标志的interesting thing。除其他事项和示例外,据说:

[S] 标志用于跳过规则 你不想跑。这个可以 被认为是一个 goto 语句 你的重写规则集。

还有:

这种技术很有用,因为 RewriteCond 仅适用于 RewriteRule 紧随其后。 因此,如果你想做一个 RewriteCond 适用于几个 RewriteRules,一种可能的技术 是否定这些条件并使用 [Skip] 标志。

我从未尝试过,但在你的情况下它可能有用......也许^^

不过,Apache 文档的某些部分似乎表明我之前所说的是正确的。

【讨论】:

  • "RewriteConditions 仅适用于后面的一个 RewriteRule" 甚至没听懂,干得好。
【解决方案2】:

假设英语很差? 听起来您正在请求 /admin/vendors;但您是说供应商位于 /modules 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2012-05-16
    • 2012-03-21
    • 2015-07-31
    相关资源
    最近更新 更多