0

我有这个

#RewriteCond %{HTTP_HOST} ^([^\.]+)\.localhost$ [NC]
#RewriteRule ^$ /s/index.php?s=%1 [L]

在这种情况下,每当我调用 test.localhost 时,它都会从 localhost/s/index.php?s=test 获取内容

但是,当我在地址栏中键入 www.localhost 时,它不应该从 /s/index.php 获取内容。

我如何在 htaccess 中写入条件。

例如,如果是 www = 不从 /s/index.php 获取内容

4

2 回答 2

2

你只需要另一个RewriteCond来排除www.

# Matches all subdomains:
RewriteCond %{HTTP_HOST} ^([^\.]+)\.localhost$ [NC]
# But then excludes www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^$ /s/index.php?s=%1 [L]
于 2012-05-20T19:35:59.273 回答
1

因此,您希望.localhost 访问 localhost/s/index.php?s=以获取www.localhost 之外的所有内容?最简单和最具体的方法是:

RewriteCond %{HTTP_HOST} ^([^\.]+)\.localhost$ [NC]
RewriteCond %{HTTP_HOST} !=www.localhost [NC]
RewriteRule ^$ /s/index.php?s=%1 [L]

这使用了 RewriteCond 的“词法相等”检查,它应该是最准确的,并且比正则表达式快一点。

于 2012-05-20T19:38:49.377 回答