URL перенаправления точное совпадение с htaccess, как с учетом регистра - PullRequest
1 голос
/ 25 марта 2020

URL-адрес перенаправления точно совпадает с htaccess, не перенаправляется, если строка запроса или что-либо после индекса. php

Redirect This Page: https://example.com/demo/index.php
To Page: https://example.com/ (home page)

But Do Not redirect: https://example.com/demo/index.php/*

 Do NOT redirect: https://example.com/demo/index.php/password

 Do NOT redirect https://example.com/demo/index.php?m=page
  not redirect if any other combination 

only redirect https://example.com/demo/index.php to https://example.com/

этот скрипт не работает

RewriteEngine On
RewriteBase /
RewriteRule ^demo/index.php /demo/index.php?m=page[L,NC,END]
RewriteRule ^demo/index.php$ https://example.com/ [L,R=301]

Ответы [ 3 ]

0 голосов
/ 25 марта 2020

Вы можете использовать эти правила на сайте root .htaccess:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+demo/index\.php\s [NC]
RewriteRule ^ / [L,R=301]

RewriteRule ^demo/index\.php$ $0?m=page [QSA,NC,L]
0 голосов
/ 26 марта 2020

Это было создано Генератором перенаправления htaccess Я использую очень часто.

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^demo/index\.php$ https://example.com/? [R=301,L]

Может быть "?" знак избыточен из-за совпадения пустой строки запроса.

Не уверен, но вы также можете попробовать добавить

RewriteCond %{REQUEST_METHOD} !=POST 

на случай, если вы не сможете войти в систему. Все вместе:

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^demo/index\.php$ https://example.com/? [R=301,L]
0 голосов
/ 25 марта 2020

только перенаправление https://example.com/demo/index.php на https://example.com/

Если вы хотите перенаправить только этот точный URL, без строки запроса, вам нужно отменить существующие правила и включают дополнительное условие, которое проверяет, что QUERY_STRING пуст. RewriteRule совпадает только с URL-путем, что исключает строку запроса.

Вам также не хватает пробела перед аргументом flags в первом правиле.

Например:

# Redirect exact URL to home page
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^demo/index\.php$ / [R=302,L]

# Redirect other URLs with query string OR path-info
RewriteRule ^demo/index\.php /demo/index.php?m=page [NC,L]

Вам не нужно L и END.

Тест с 302, и измените на 301 только после того, как у вас есть подтвердил, что работает хорошо. Чтобы избежать проблем с кэшированием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...