仅限URL中的第一个目录的RewriteRule

时间:2013-09-19 19:49:47

标签: regex apache mod-rewrite

我不确定如何在不重定向.css和.js文件的所有请求的情况下说出这个RewriteRule。

我需要

  

domain.com/randomfolder /

转到我的域名索引(即.domain.com/index.php),查看所请求的文件夹,但保持网址完好无损。

这似乎很容易,但我似乎无法指定我只希望重定向目录的第一个实例。

例如:

  

RewriteRule ^(。*)$ index.php

用于重定向,但是当我的index.php调用/css/main.css时,它返回index.php。

有没有办法说 domain.com/subdirectory / 应重定向但 domain.com/subdirectory/file.css 不应该?

我很好,只需要排除/ css /和/ js /目录,但我不知道如何。

2 个答案:

答案 0 :(得分:0)

RewriteRule ^([^/]+)/?$ /index.php?folder=$1 [L]

这会将www.example.com/subdirectory/重定向到www.example.com/index.php?folder=subdirectory,而不会更改访问者看到的网址。它不会重定向子目录中任何特定文件的请求,也不会重定向子目录中子目录的请求。

URL Requested:                Redirect:
--------------------------------------------------------------------
example.com/css               example.com/index.php?folder=css
example.com/css/              example.com/index.php?folder=css
example.com/css/main.css      example.com/css/main.css (no redirect)
example.com/css/js/           example.com/css/js/      (no redirect)

答案 1 :(得分:0)

这应该适合你:

<Files ~ "\.(css|js)$">
    RewriteRule ^subdirectory(.*)$ index.php
</Files>