繁体   English   中英

为什么 htaccess 重定向到 https://example.com/index.php 而不是特定的子网址?

[英]why htaccess redirect to https://example.com/index.php instead the specific sub-url?

我在 htaccess 中有下一个配置

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

it works well if I type example.com or http://example.com it redirect correctly to https://example.com , but if I type example.com/section it redirect to https://example.com/index .php不正确,如何解决?

Adding the "/$1**" after index.php on this part of htaccess file then we get https://example.com/index.php/subroute , which redirects correctly to the sub route BUT STIL SHOWING INDEX.PHP in the URL

# Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php**/$1** [L]

我通过使用下面的代码解决了我的问题,你可以试试这个

<IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteCond %{HTTPS} off [OR] 
    RewriteCond %{HTTP_HOST} !^www\. [OR] 
    RewriteCond %{HTTP_HOST} ^example\.com [NC] 
    RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE] 
    RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php(/[^\ ]*)?\ HTTP/  
    RewriteRule ^index\.php(/(.*))?$ example.com/$2 [R=301,L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

这是我用来为 Laravel 重定向到HTTPS的代码:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    # Force non-www:
    RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
    RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

    # Force     SSL redirect:
    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://example.com/$1 [R,L]
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]


    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM