我目前正在使用 .htaccess 在我的网站上重写以创建动态子域。我还使用它来删除所有页面上的 .php 扩展名。但是,一旦进入子域,它就会再次尝试重定向。例如,如果您访问 https://admin.example.com/test,它实际上将访问 https://example.com/clients/admin/test.php。我使用以下 .htaccess 文件不断收到各种 404 错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Options +MultiViews
Options +FollowSymLinks

RewriteEngine On
RewriteRule ^subdomains / ( .* ) / ( .* ) http : //$1.example.com/$2 [r=301,nc]
RewriteCond % {REQUEST_FILENAME } !-f
RewriteRule ^ ( [^\\ . ] + )$ $ 1 .php [NC ,L ]

RewriteCond % {HTTP_HOST } !^ (www\\ . )?example\\ .com$ [NC ]
RewriteCond % {HTTP_HOST } ^ (www\\ . )? ( [^\\ . ] + )\\ .example\\ .com$ [NC ]
RewriteCond % {DOCUMENT_ROOT } /% 2 % {REQUEST_URI } / d
RewriteRule [^ / ]$ % {REQUEST_URI } / [R = 301 ,L ]

RewriteCond % {ENV :REDIRECT_STATUS } ^$
RewriteCond % {HTTP_HOST } !^ (www\\ . )?example\\ .com$ [NC ]
RewriteCond % {HTTP_HOST } ^ (www\\ . )? ( [^\\ . ] + )\\ .example\\ .com$ [NC ]

RewriteRule ^ ( .* )$ clients /% 2 /$ 1 [QSA ,L ]

如何防止它重定向到 https://admin.example.com/clients/admin/test.php?


首先,您可能想关闭多视图,这会弄乱整个”删除 php 扩展”的事情

比,你想要这条规则:

1
2
RewriteCond % {REQUEST_FILENAME } !-f
RewriteRule ^ ( [^\\ . ] + )$ $ 1 .php [NC ,L ]

在您的重定向之后,并且您希望对实际重定向进行重定向状态检查:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Options Multiviews + FollowSymLinks

RewriteEngine On

RewriteCond % {ENV :REDIRECT_STATUS } ^$
RewriteRule ^subdomains / ( .* ) / ( .* ) http : //$1.example.com/$2 [r=301,nc]

RewriteCond % {ENV :REDIRECT_STATUS } ^$
RewriteCond % {HTTP_HOST } !^ (www\\ . )?example\\ .com$ [NC ]
RewriteCond % {HTTP_HOST } ^ (www\\ . )? ( [^\\ . ] + )\\ .example\\ .com$ [NC ]
RewriteCond % {DOCUMENT_ROOT } /% 2 % {REQUEST_URI } / d
RewriteRule [^ / ]$ % {REQUEST_URI } / [R = 301 ,L ]

RewriteCond % {REQUEST_URI } !^ /clients /
RewriteCond % {HTTP_HOST } !^ (www\\ . )?example\\ .com$ [NC ]
RewriteCond % {HTTP_HOST } ^ (www\\ . )? ( [^\\ . ] + )\\ .example\\ .com$ [NC ]
RewriteRule ^ ( .* )$ clients /% 2 /$ 1 [QSA ,L ]

RewriteCond % {REQUEST_FILENAME } !-f
RewriteCond % {REQUEST_FILENAME } .php f
RewriteRule ^ ( [^\\ . ] + )$ $ 1 .php [NC ,L ]



相关讨论

  • 使用子域规则时,这给了我 500 错误。
  • @brokekidweb 抱歉错过了一个条件


声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。