URL重写,保留自然路径

时间:2012-10-02 06:27:02

标签: .htaccess mod-rewrite url-rewriting

我正在为运行多个JS应用程序包的系统编写默认的.htaccess。我想要从根目录转发这些应用程序的URL重写(即如果系统包含在 www / www / appname / 应该转发到 server.index.php?应用程式= appname中)。

这是我现在的大致内容(我将跳过我的.htaccess中的其他内容)。

RewriteRule ^use/?([^/]*)/?([^/]*)/?([^/]*)/? \server/index.php?app=$1&servable=$2&action=$3
RewriteRule ^web/?([^/]*)/? \server/index.php?servable=clients&action=web&app=$1

如您所见,我目前正在使用两个端点:使用转发到后端中的任何操作,而 web 转发到实际为应用程序提供服务的操作本身作为HTML文档。 我基本上想在后一种情况下跳过URL中的 web / 前缀,但不会妨碍对系统目录中已存在的自然目录的访问。

这是full source。 (正如你所看到的,我的.htaccess可能还有其他问题,所以如果你有任何指示我很乐意解决它们。)

1 个答案:

答案 0 :(得分:0)

  

我基本上想在后一种情况下跳过URL中的web /前缀,但不妨碍访问系统目录中已存在的自然目录。

您可以使用条件标记-f-d来检查。因此,如果您在 / web 规则正上方包含这些条件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

表示请求的URI未映射到现有文件或目录,然后:

RewriteRule ^/?([^/]*)/? \server/index.php?servable=clients&action=web&app=$1

除了没有/web部分。