我的目标:
每个网址http://www.domain.tld必须由 http://www.domain.tld/www/frontend/web 提供服务 和 每个网址http://www.domain.tld/backend必须是 http://www.domain.tld/www/backend/web 的服务器
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^/backend
RewriteRule ^backend(.*)$ /www/backend/web/$1 [L]
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ /www/frontend/web/$1 [L]
</IfModule>
第一个目标还可以,但第二个目标不行。
服务器将我的/backend 重定向到/www/frontend/web/backend/。
我什至使用 an htaccess tester online 测试了它它给了我同样的结果。
为了精确起见,即使我使用了[L],第一个重写规则也会被忽略,或者至少不会停止执行。
最佳答案
您需要从第二条规则中排除重写的后端 URI:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^backend/(.*)$ www/backend/web/$1 [L,NC]
RewriteCond %{REQUEST_URI} !^/(public|www/(backend|frontend)/) [NC]
RewriteRule ^(.*)$ www/frontend/web/$1 [L]
</IfModule>
关于apache - .htaccess 重写特定子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28238717/