【问题标题】:use .htaccess to redirect all requests but two使用 .htaccess 重定向所有请求,但两个
【发布时间】:2011-11-11 09:29:47
【问题描述】:

我是新手,但我有以下 .htaccess 可以正常工作:

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

这会将 site.com 或 www.site.com 上的任何人重定向到 www.site.come/wordpress 但是,我有 2 个目录需要忽略此规则: www.site.com/dir1 www.site.com/dir2 并且这些需要被忽略(即使它们没有 www,也不要重写。)

编辑: 它需要忽略目录和目录中的文件。 所以 site.com/dir1 和 site.com/dir1/index.php 都应该单独放置。

我该怎么做?

谢谢! 克里斯

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    您只需要在您的第一个 RewriteRule 中添加几个条件:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^site\.com$
    RewriteCond %{REQUEST_URI} !^/dir1(/|$)
    RewriteCond %{REQUEST_URI} !^/dir2(/|$)
    RewriteRule (.*) http://www.site.com/$1 [R=301,L]
    RewriteRule ^$ /wordpress [L,R=301]
    

    条件末尾的 (/|$) 测试另一个路径组件的 / 或请求的结尾 ($)。如果您不特别并且愿意忽略以/dir1/dir2 开头的任何请求,则可以关闭(/|$),例如/dir1a.

    第二个 RewriteRule 不需要任何新条件,因为它只匹配域根 (^$)。

    【讨论】:

    • 正是我所需要的,我非常感谢您的解释!
    猜你喜欢
    • 1970-01-01
    • 2015-04-10
    • 2019-10-03
    • 2015-12-29
    • 2016-11-30
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多