0

试图只为驻留在根目录中的页面重写 URL 字符串,删除页面扩展以用于装饰性原因。例如:

www.site.com/page.html ==> www.site.com/page www.site.com/about.html ==> www.site.com/about

当前使用此代码:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+\.com) [NC]
RewriteRule (.*) http://www.%1/$1 [R=301,L]

但是,我不希望规则修改子目录或子域。例如我也有:

clientA.site.com(映射到 www.site.com/clientA),我不需要保持不变。现在它正在将该页面 (client.site.com/index.html) 发送到未找到的页面。

4

1 回答 1

0

您的规则不会影响子域。必须有其他规则导致404未找到响应。

如果您想限制对根页面的请求,您可以通过在请求 URL 路径中排除斜杠来使用适当的模式指定它

# exclude directories
RewriteCond %{REQUEST_FILENAME} !-d
# allow top level request URLs only
RewriteRule ^[^/]*$ http://www.%1/$0 [R,L]

永远不要在启用的情况下进行测试,有关详细信息301,请参阅此答案 提示调试 .htaccess 重写规则

于 2013-04-22T20:30:42.163 回答