0

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

我有不同的域设置测试目的,但它们都以http://MICROSOFT或开头http://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]
4

1 回答 1

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/显示的正确页面
  • 其他规则有效
于 2012-11-29T20:14:10.097 回答