我有以下重写规则:
<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。
答案 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。