.htaccess 重定向但排除某些文件夹

Posted

技术标签:

【中文标题】.htaccess 重定向但排除某些文件夹【英文标题】:.htaccess redirect but exclude some folder 【发布时间】:2021-06-13 15:18:23 【问题描述】:

您好,我正在使用 cpanel。在 cpanel 中,我创建了一个重定向,它创建了一个像这样的 .htaccess。

RewriteEngine On
RewriteCond %HTTPS !=on
RewriteRule ^(.*)$ https://%HTTP_HOST%REQUEST_URI [L,R=301]
RewriteOptions inherit
Options -Indexes

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php73” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php73 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit
RewriteCond %HTTP_HOST ^paw\.xevz\.migor\.eu$ [OR]
RewriteCond %HTTP_HOST ^www\.paw\.xevz\.migor\.eu$
RewriteRule ^/?$ "http\:\/\/paw\.xevz\.migor\.eu\/mainfolder" [R=301,L]

这个问题,当我在公共目录中添加新文件夹并查看我的页面时,它总是会重定向到“主文件夹”。如果我的链接类似于 http://paw.xevz.migor.eu/subfolder ,我将如何添加不会重定向到主文件夹的 RewriteCond ?我试过这样,

RewriteCond %REQUEST_URI !^/subfolder/    
RewriteCond %HTTP_HOST ^paw\.xevz\.migor\.eu$ [OR]
RewriteCond %HTTP_HOST ^www\.paw\.xevz\.migor\.eu$
RewriteRule ^/?$ "http\:\/\/paw\.xevz\.migor\.eu\/mainfolder" [R=301,L]

但没有运气。请帮忙谢谢。

附:我的 .htaccess 中的那些链接只是示例。

【问题讨论】:

%REQUEST_URI!^/subfolder/ 之间必须有一个空格... @arkascha 对不起我的错。我现在更新了我的问题。 【参考方案1】:

RewriteRule ^/?$ 只会匹配和重定向着陆页 URI。最后你可能有一个前端控制器规则,它将所有内容重写为?page=something 之类的东西,这将触发所有不用于文件或目录的 URI 的重定向规则。

您可以改用此重定向规则:

RewriteCond %ENV:REDIRECT_STATUS ^$
RewriteCond %HTTP_HOST ^(?:www\.)?paw\.xevz\.migor\.eu$ [NC]
RewriteRule ^$ /mainfolder/ [R=302,L]

确保这是RewriteEngine On 行下方的最顶层规则,并在清除浏览器缓存后对其进行测试。

一旦您确认它工作正常,请将R=302 替换为R=301。在测试mod_rewrite 规则时避免使用R=301(永久重定向)。

RewriteCond %ENV:REDIRECT_STATUS ^$ 将确保由于其他规则而在 1 次或多次重写后不会执行此规则。

【讨论】:

谢谢伙计。除了这个,我想我还有一个问题。我会将其设置为正确答案。我添加了一个新问题,希望您能分享您对它的理解***.com/questions/66654619/…。谢谢

以上是关于.htaccess 重定向但排除某些文件夹的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 301重定向整个网站但有例外

具有排除条件的 301 重定向 (htaccess)

.htaccess子域名重定向无法正常工作

重定向.htaccess 301

使用 .htaccess 将 http 重定向到 https 时,某些 url 出现奇怪的 401 错误

Htaccess 使用文件夹重定向