Как перенаправить или переписать URL с вопросительным знаком и хэштегом? - PullRequest
0 голосов
/ 11 февраля 2019

Я хотел бы либо перенаправить, либо перезаписать предыдущие URL-адреса сайтов по соответствующим URL-адресам новых сайтов через файл .htaccess.

По некоторым другим причинам это уже есть в файле .htaccess, код которого приведен ниже.:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Я хотел бы перенаправить или переписать следующим образом:

http://www.example.com/index.php?pages/oldpage#part

до

http://www.example.com/newpage/

Чтобы сделать это перенаправление или переписать, я не знаючто добавить в .htaccess файл?

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019
RewriteCond %{QUERY_STRING} ^pages/oldpage$
RewriteRule ^index\.php /newpage [QSD]
  • Захватите строку запроса, используя RewriteCond, соответствующий ей * только 1004 * с pages/oldpage от начала до конца.
  • Используйте RewriteRule для сопоставления с REQUEST_URI, равным index.php в http://www.example.com/index.php?pages/oldpage, а затем перенаправьте его на /newpage, что фактически http://www.example.com/newpage отбрасывает строку запроса с помощью QSD .
0 голосов
/ 13 февраля 2019

Я, наконец, решил этот вопрос, переписав следующее:

RewriteCond %{QUERY_STRING} pages/oldpage
RewriteRule ^(.*)$ http://www.example.com/newpage/? [R=301,L]

Еще раз спасибо всем за помощь

0 голосов
/ 11 февраля 2019

A1 : необходимо использовать обычные правила перезаписи для строки запроса :

RewriteCond %{QUERY_STRING} ^pages/oldpage$
RewriteRule ^/index\.php /newpage/?

A2 :Краткий ответ для #part - это невозможно.Но не из-за поведения Apache HTTPD.

Часть после # называется фрагмент в RFC 3986 .Пользовательский агент (браузер AKA) НИКОГДА не отправит его, а ваш сервер НИКОГДА не получит URI / URL с фрагментом.

Пользовательский агент отвечает за разрешение фрагмента ( RFC 3986,раздел 3.5 ):

Как таковой, идентификатор фрагмента не используется в специфичной для схемы обработке URI;вместо этого идентификатор фрагмента отделяется от остальной части URI до разыменования, и, таким образом, идентифицирующая информация в самом фрагменте разыменовывается исключительно пользовательским агентом , независимо от схемы URI.

...