apache - .htaccess 重写特定子文件夹

标签 apache .htaccess mod-rewrite

我的目标:

每个网址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/

相关文章:

通过非 PHP 扩展访问时,PHP Session 不起作用

.htaccess - 子文件夹中的 Codeigniter 和用于内部重定向的 htaccess

Apache 基于符号链接(symbolic link)重定向

linux - Apache 虚拟主机 - xxx.241.214.xxx :80 has no VirtualHosts

.htaccess - 将 index.php 重定向到 .htaccess 中的根目录

xml - ApacheFOP - 空白 PDF 输出?

.htaccess - 使用 .htaccess 更改显示的 URL,但不实际重定向内容?

php - Apache mod_rewrite 和 PHP GET 数组

wordpress - 如何使用重写模块在 Apache 上使用不同的端口运行两个不同的技术项目

php - 是否有可下载的预配置 LAMP 堆栈?