htaccess多个RewriteCond

时间:2015-01-07 00:04:09

标签: apache .htaccess mod-rewrite url-rewriting

这是我的网站根

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

第一个.htaccess里面的beta文件夹用于将目录从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/$1 [L]

公用文件夹中的other.htaccess用于缩短从index.php?photo_id=id/id的网址:

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

我怎样才能完成这些工作,因为现在只有一个人不在一起工作?感谢

2 个答案:

答案 0 :(得分:2)

为什么你有"非公开"在public_html中的东西?如果您想将其设为私有,则不应将其放在私人目录中吗?

答案 1 :(得分:0)

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

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

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

对于公用文件夹,还要删除绝对URL

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