перенаправить 301 в /, если URL содержит индекс. php - PullRequest
1 голос
/ 26 марта 2020

У меня есть блог в laravel 5.8, и я хочу перенаправить 301 в /, если есть индекс. php в URL.

Мой .htaccess это

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

    RewriteEngine On

    # Handle www + https
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # Redirect if index.php is in the URL
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,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>

Я пробовал этот подход:

    # Redirect if index.php is in the URL
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

, но проблема в том, ЕСЛИ есть URL, похожий на этот, который содержит (? Get_params)

htts://www.example.com/index.php?test

, он перенаправит 301 в / ? test

Как изменить правило для перенаправления 301 в / (без каких-либо? params), если URL содержит индекс. php?

1 Ответ

4 голосов
/ 26 марта 2020

Вы можете использовать QSD flag (Query String Discard) для перенаправления без передачи строки запроса.

Когда запрашиваемый URI содержит строку запроса, а целевой URI делает Нет, по умолчанию RewriteRule копирует эту строку запроса в целевой URI. Использование флага [QSD] приводит к тому, что строка запроса отбрасывается.

# Redirect if index.php is in the URL
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php /$1 [R=301,NE,L,QSD]
...