.htaccess向404重定向到特定子目录添加例外

时间:2013-04-08 20:52:16

标签: .htaccess redirect subdomain http-status-code-404

子目录是/ addon /它存储我的子域a.k.a插件域的所有数据。 在这个子目录中,我还存储了我的主域数据,我的主域名是website.com

RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www.)?website.com$ [NC]
    RewriteCond %{REQUEST_URI} ^/addon/(.*)$
    RewriteRule ^(.*)$ - [L,R=404]

好的,这部分已经完成,如果我进入website.com/addon/mysecondwebsite-com,我会得到404。 如果我进入mysecondwebsite.com,我会看到website.com/addon/mysecondwebsite-com的内容。

这很棒,这就是我想要的。

现在是棘手的部分,我已经建立了website.com以使用website.com/addon/website-com。无需告诉我如何为website.com配置/ addon / website-com。我需要为配置为使用/ addon / website-com / 的website.com禁用404,但我还需要确保我是否进入website.com/addon/website-com此目录已返回404. *

我的重写条件提到我是否在我的主域名(website.com)上输入/ addon / *我将返回404错误。这对我的插件域很有用,因为它们使用/ addon /而不是我的主域。但是我如何阻止/插入/ *但仍然使用我的主域名?

  • website.com = 404 / BAD (website.com/addon/website-com)
  • mysecondwebsite.com = 200 /好(website.com/addon/mysecondwebsite-com)

  • website.com/addon/mysecondwebsite-com = 404 /好

  • website.com/addon/website-com = 404 /好

这样你才能全面了解这是我的.htaccess文件/ public_html /

# Part one block direct access to /addon/ folder
RewriteEngine On
        RewriteCond %{HTTP_HOST} ^(www.)?website.com$ [NC]
        RewriteCond %{REQUEST_URI} ^/addon/(.*)$
        RewriteRule ^(.*)$ - [L,R=404]

# Part two using /addon/website-com/ as website.com directory
        RewriteCond %{HTTP_HOST} ^(www.)?website.com$
        RewriteCond %{REQUEST_URI} !^/addon/website-com/
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /addon/website-com/$1
        RewriteCond %{HTTP_HOST} ^(www.)?website.com$
        RewriteRule ^(/)?$ addon/website-com/index.php [L]

1 个答案:

答案 0 :(得分:0)

用这个替换你的404处理程序:

ErrorDocument 404 /404.shtml

RewriteCond %{HTTP_HOST} ^(www\.)?website\.com$ [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+addon/ [NC]
RewriteRule (?!^404\.shtml$)^.*$ - [L,R=404,NC]