.htaccess 重定向但排除某些文件夹
.htaccess redirect but exclude some folder
您好,我正在使用 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]
这个问题,当我在 public 目录中添加新文件夹并查看我的页面时,它总是会重定向到 'mainfolder'。如果我的 link 类似于 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]
但运气不好。请帮忙谢谢
P.S。我的 .htaccess 中的那些 links 只是示例。
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 次或多次重写后执行。
您好,我正在使用 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]
这个问题,当我在 public 目录中添加新文件夹并查看我的页面时,它总是会重定向到 'mainfolder'。如果我的 link 类似于 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]
但运气不好。请帮忙谢谢
P.S。我的 .htaccess 中的那些 links 只是示例。
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 次或多次重写后执行。