htaccess mod_rewrite для SEO URL неправильно переписывают
То, что я пытаюсь сделать, это иметь красивые URL. Я добился этого для случая, когда я хочу, чтобы вся строка указывала на один скрипт PHP. Я не буду.
Итак, это работает: example.com/login/1/2
=> /index.php?go=login&do=1&msg=2
С помощью:
RewriteEngine on
RewriteBase /
RewriteRule ^([0-9a-zA-Z_-]+)/?$ /index.php?go=$1 [L,QSA]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /index.php?go=$1&do=$2 [L,QSA]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /index.php?go=$1&do=$2&q1=$3 [L,QSA]
Теперь скажем, я хочу example.com/webapp/1/2/3
=> webapp.php?1=1&2=2&3=3
Добавив это ниже выше:
RewriteRule ^webapp/?$ /webapp.php [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1 [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1&do=$2 [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1&do=$2&q1=$3 [L,QSA]
Навигация к example.com/webapp
перенаправляет на index.php
каждый раз, удаляя любую строку запроса.
Если я закомментирую первый блок кода и перейду к example.com/webapp
я получил webapp.php
как я должен.
Я не получаю ошибок в любом журнале. Журнал доступа во время вызовов сообщает 302 в веб-приложение
Что я делаю неправильно?
2 ответа
добавив это ниже выше
Вы должны добавить это, прежде чем выше!
Ваши правила должны быть расположены в порядке специфичности. Сначала более конкретные правила, последние самые общие. Ваш первый блок правил содержит самые общие / универсальные правила, так что именно он перехватывает запрос и останавливает обработку.
Я не уверен, правильно ли вы поняли концепцию красивых URL: https://en.wikipedia.org/wiki/Semantic_URL То, что вы планируете делать, определенно не поможет вашему SEO. И вы не должны перенаправлять временно (302 перенаправление), но постоянно [R=301].