#.htaccess #redirect #mod-rewrite #url-rewriting
#.htaccess #перенаправление #мод-перезапись #url-переписывание
Вопрос:
Я пытаюсь выполнить перезапись и перенаправить строку запроса URL-адреса как папку.
Моя перезапись / перенаправление выполняется в соответствии с приведенным ниже:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?folder/sub-folder-with-get-param-(.*?)/?$ /folder.php?key=$1 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /folder.php?key=([^amp; ] )
RewriteRule ^/?folder.php$ /folder/sub-folder-with-get-param-%1? [L,R=301]
Вышеуказанное работает, но как только я попадаю на указанную страницу и выполняю вторичный поиск, возвращается URL-адрес:
/folder/folder?key=value
Который возвращает внутреннюю ошибку сервера 500.
Как бы мне это исправить — нужно ли мне делать вторичное перенаправление? извините, если это глупый вопрос, я просто нахожу перенаправления трудными для понимания.
Спасибо
Комментарии:
1.
I get to the directed page and do a secondary search
: Можете ли вы запустить этот инструмент Chrome dev с отключенным кэшированием и проверить на вкладке Сеть, какие URL-адреса перенаправления 301/302 вы получаете2. @anubhava Я получаю один 301: URL-адрес запроса: папка / папка.php?ключ = значение и ошибка 500, потому что папка / папка.php?ключ = значение должно быть folder.php?ключ = значение?
3. Есть ли у вас дополнительные правила в этом htaccess? Где это находится?
4. Да, у меня есть больше правил, но я поместил их вверху, чтобы не было никаких конфликтов. Может ли это быть связано с тем, что форма на второй странице имеет действие как «действие =’folder.php «»? так это добавляется к правилу перезаписи?
5. Попробуйте добавить этот
<head>
тег чуть ниже HTML-кода вашей страницы:<base href="/" />