.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 重定向但排除某些文件夹的主要内容,如果未能解决你的问题,请参考以下文章