重定向/ media / *到/ project / media / *以及其他所有内容到/dispatch.php

时间:2010-01-06 00:45:28

标签: apache .htaccess mod-rewrite

我有以下重写规则:

<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/中查找所请求的文件。我希望重写网址/media/*以查看project/media/*

使用重写规则RewriteRule ^media/.* project/media [NC,L]会导致所有内容发送到dispatch.php。

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

请尝试以下规则:

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

答案 2 :(得分: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}变量,但我无法使其正常工作。

答案 3 :(得分:0)

可以找到解决方案here