htaccess 多个 RewriteConds

htaccess multiple RewriteConds

这是我的站点根目录

/public_html
    beta/
        .htaccess
        public/
            index.php
            .htaccess

beta 文件夹中的第一个 .htaccess 用于将目录从 mysite.com/beta 更改为 mysite.com/beta/public:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.mysite.com/$
RewriteCond %{REQUEST_URI} !beta/public/
RewriteRule (.*) /beta/public/ [L]

public 文件夹中的 other.htaccess 是为了缩短 url 从 index.php?photo_id=id/id:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?photo_id=

我怎样才能使它们同时工作,因为目前只有其中一个不能一起工作?谢谢

为什么 public_html 中有 "non public" 东西?如果你想让它私有,你不应该把它放在一个私有目录中吗?

对于 beta htaccess 文件,请尝试删除绝对 URL

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\)?mysite\.com$ [NC]
RewriteCond  !^public
RewriteRule ^(.*)$ public/ [L]

请注意,需要从 HTTP_HOST 中删除结尾的斜杠,该变量中没有斜杠。

对于 public 文件夹,也删除绝对 URL

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?photo_id=