【问题标题】:Display 404 error when a certain URL is accessed using a specific sub-domain使用特定子域访问特定 URL 时显示 404 错误
【发布时间】:2012-11-17 23:34:18
【问题描述】:

我有两个指向完全相同文件的子域。我使用服务器端代码来控制样式/图像。我希望只有一个子域可以访问特定页面。如何使用 RewriteRules 完成此任务?

我有不同的域设置测试目的,但它们都以http://MICROSOFThttp://APPLE 开头。我只希望在通过http://MICROSOFT.somethingelse.com/ http://MICROSOFT.another.sub.sub.domain/ 访问该站点时显示该页面,而不是通过http://APPLE.com 或主机名中带有 APPLE 的任何其他内容。

转到http://microsoft.anythinghere/special-sub-directory/ 将按预期显示页面,但转到http://apple.anythinghere/special-sub-directory/ 将显示404 错误。

如何修改此代码以按照我的需要工作?

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^http://apple\.[A-z0-9]+/special-sub-directory/?$ - [R=404]
</IfModule>

请注意,这是一个 WordPress 网站,因此必须遵守以下规则:

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

【问题讨论】:

    标签: wordpress apache .htaccess mod-rewrite http-status-code-404


    【解决方案1】:

    RewriteRule 没有得到协议和主机名。你需要的是一个额外的RewriteCond

    RewriteCond %{HTTP_HOST} ^apple\. [NC]
    RewriteRule ^special-sub-directory/?$ - [R=404]
    

    这些是适用于我的开发机器的规则:

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} ^localhost [NC]
    RewriteRule ^special-sub-directory/?$ - [R=404]
    
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    
    • 它们被放置在/.htaccess
    • 访问 http://localhost/special-sub-directory/ 产生 404 错误
    • 访问http://127.0.0.1/special-sub-directory/显示正确的页面
    • 其他规则有效

    【讨论】:

    • 感谢您的回复。我尝试了您的代码,但看起来 WordPress .htaccess 规则导致它无法正常工作。请看我上面的更新。 (请注意,我尝试在 WordPress 代码之前和之后插入您的代码)
    • 嗯。我想知道问题是否是目录不存在?该目录实际上只是一个从 WordPress 的“页面”创建的 URL。
    • 删除前导斜杠应该可以解决问题。该目录不必实际存在。我将尾随 / 设为必需...更改为 /?$ 以使其可选。
    • 我尝试复制/粘贴您更新的代码并覆盖我的(然后将 localhost 更改为 apple\.),但在访问 apple 下的 URI 时它仍然显示页面而不是 404。
    • 我只是使用 MAMP 设置了一个本地开发 URL,因此无法通过网络访问它。我使用的实际网址是apple.jenssite.dev/products
    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2016-07-30
    相关资源
    最近更新 更多