你好,我在 public_html ex. 中有 2 个文件夹(主文件夹和子文件夹)。在我的 public_html 与我的 2 个文件夹相同的级别中,我有一个像这样的 .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]
此 .htaccess 会将页面重定向到主文件夹。当我尝试像这样查看我的子文件夹时http://paw.xevz.migor.eu/subfolder http://paw.xevz.migor.eu/subfolder,一切工作正常,但由于我在尝试查看某些函数时遇到了 404 错误,因为网址中没有 index.php。我将此 .htaccess 添加到我的子文件夹中。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
它运行良好,但我发现当我尝试打开时,http://paw.xevz.migor.eu/subfolder http://paw.xevz.migor.eu/subfolder正如我之前所做的那样,它会将我重定向到主文件夹。为了查看我的代码,我必须查看这样的链接。http://paw.xevz.migor.eu/subfolder/somefunction http://paw.xevz.migor.eu/subfolder/somefunction。有人可以解释为什么会发生这种情况吗?我对 .htaccess 没有太多了解,我不确定发生了什么。我将在我的 laravel 项目或 .htaccess 中做什么来避免这种冲突?这样当我想查看我的子文件夹时,我需要将其放入网址中?http://paw.xevz.migor.eu/subfolder http://paw.xevz.migor.eu/subfolder无需重定向。谢谢。
在您的根 .htaccess 中包含此规则:
# using THE_REQUEST make sure we match whitespace (\s)
# followed by 1+ / followed by ? or \s
RewriteCond %{THE_REQUEST} \s/+[?\s]
RewriteCond %{HTTP_HOST} ^(?:www\.)?paw\.xevz\.migor\.eu$ [NC]
RewriteRule ^ /mainfolder/ [R=302,L]
THE_REQUEST
变量表示 Apache 从浏览器接收到的原始请求,但它没有得到被覆盖执行其他重写指令后。该变量的示例值为GET /index.php?id=123 HTTP/1.1
or GET / HTTP/1.1
在测试此更改之前,请确保清除浏览器缓存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)