2011-09-24 97 views
0

我试图做到这一点:
example.com/directory/song.mp3 - >不变
example.com/directory/ - > example.com/?dir=directory%2F
例子的.com/- >不变
example.com/index.php? - >不变

基本上,如果用户请求根以外的任意目录,我需要它改写,不被重定向,到index.php DIR = <斜杠路径已更改为%2F> 我希望用户仍然可以在其浏览器中看到example.com/path/to/stuff,但要重写的请求是se rverside。mod_rewrite的目录请求

example.com/songs/stuff - > example.com/?dir=songs%2Fstuff%2F

我希望我清楚我所期待的。

回答

0

试试这个:

RewriteRule ([^/]+/.*) /index.php?dir=$1 
+0

我只是测试这一点,它给了我一个内部服务器错误。我尝试加载http://127.0.0.1/opentape/重写规则不应该重写,如果它? –

+0

我的错误。我添加了RewriteCond%{REQUEST_FILENAME} -d,因为它正在重写样式表网址。唯一的问题是,它重写为index.php作为相对路径,导致404错误。 test.com/dir/被重写为test.com/dir/index.php?dir=/dir而不是test.com/index.php?dir=/dir。另外,有没有办法让重定向服务器端?我希望test.com/dir/保留在浏览器窗口中。 –

+0

呃,这个问题搞砸了。它的工作有点。我将针对我现在遇到的问题开始一个新问题。谢谢。 –