0

子目录是 /addon/ 它存储我的子域(即插件域)的所有数据。在这个子目录中,我还存储了我的主域数据,我的主域是 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/ 而不是我的主域。但是我如何也阻止 /addon/* 但仍使用我的主域?

  • website.com = 404 / 坏(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 / 好

只是为了让您了解全貌,这是我的 /public_html/ 的 .htaccess 文件

# 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]
4

1 回答 1

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]
于 2013-04-08T21:08:33.783 回答