2010-01-06 47 views
0

我有以下重写规则:重定向/媒体/ *到/项目/媒体/ *和其他一切/dispatch.php

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/

    # Route requests to /media/* to /projects/media/* 
    RewriteRule ^media/.* - [NC,L] 

    # Route all URLs to dispatch.php. 
    RewriteRule ^(.*)$ dispatch.php [L] 
</IfModule> 

这重定向一切dispatch.php,除非该网址为example.com/media/*在这种情况下,它将在./media/中查找所请求的文件。我想要重写URL /media/*以查看project/media/*

使用重写规则RewriteRule ^media/.* project/media [NC,L]会导致一切进入dispatch.php。

回答

0

解决方法可以找到here

0

您需要捕获路径并追加它。如:

RewriteRule ^media/(.*)$ project/media/$1 [NC,L] 
+0

我已经试过这个,它导致一切都被重写到dispatch.php – 2010-01-06 08:31:20

0

尝试下列规则:

RewriteRule ^media/.* project/$0 [NC,L] 
RewriteRule !^project/ dispatch.php [L] 
+0

这条规则不起作用。另外我想路由/媒体/目录/项目/媒体。 – 2010-01-06 09:10:57

0
RewriteEngine on 
RewriteBase/
# Route requests to /media/* to /projects/media/* 
RewriteRule ^media/(.*)$ project/media/$1 [L] 
# Route all URLs to dispatch.php. 
RewriteCond %{REQUEST_URI} !^/project/media/.* 
RewriteRule ^(.*)$ maintenance.php [L] 

本来我想用特殊%{IS_SUBREQ}变量,但我无法得到它的工作。